从 R 中的字符对象中删除引号

Remove quotes from a character object in R

提问人:igbobahaushe 提问时间:7/16/2021 更新时间:7/16/2021 访问量:519

问:

假设您有一个"c('r1', 'r2', 'r3')"

如何去除外部引号以返回c('r1', 'r2', 'r3')

R 行情

评论

1赞 MrFlick 7/16/2021
但是你想回报什么?另一个字符值?我的意思是,如果你是第一个值,它不会有周围的引号,因为只有当为控制台格式化字符值时,这些引号才会存在。您是否尝试像对待代码一样对待字符串?cat()
0赞 igbobahaushe 7/16/2021
我不认为我正确地解释了自己。我想在循环中使用列表作为代码。但它一直将其作为字符串读取。如果此澄清有帮助,请告诉我。谢谢。for
1赞 MrFlick 7/16/2021
基本上,字符串中有 R 代码。如果你想运行它,得到一个向量,你可以使用,但如果你不知道你正在评估的字符串中有什么,这可能会很危险。eval(parse(text=))
1赞 r2evans 7/16/2021
一个问题:你是如何在字符串中得到它的?有一些 R 表达式将返回 R 对象的字符串表示形式(例如您那里的内容);达到这一点意味着你打算做一些有用的事情的代码没有,而是对数据进行修改。也许如果你分享你是如何检索这样的字符串的,那么你在这里问的东西可能就没有必要了。
1赞 Ronak Shah 7/16/2021
这是 X-Y 问题。您有问题,并且认为删除引号是解决问题的方法()。你是在解释我们的一切,而不是描述你想做什么。请解释一下你想做什么?XYYX

答:

2赞 G. Grothendieck 7/16/2021 #1

假设 s 如下所示,并且您要遍历三个字符串:

s <- "c('r1', 'r2', 'r3')"

rr <- eval(parse(text = s)) ; rr
## [1] "r1" "r2" "r3"

for(r in rr) print(r)  # can use it in a for loop like this
## [1] "r1"
## [1] "r2"
## [1] "r3"

或者,如果您的意思是 r1、r2 和 r3 是 R 变量,那么使用上面的 rr:

r1 <- 1; r2 <- 2; r3 <- 3
L <- mget(rr)  # list with elements 1, 2 and 3
for(r in L) print(r)
## [1] 1
## [1] 2
## [1] 3

首先,您可以采取一些较早的步骤来创建一个更易于处理的对象,但这无法从所述的问题中确定。

评论

0赞 igbobahaushe 7/17/2021
谢谢你的帮助。我遇到了这个问题,因为我在 python 而不是 R 中执行了我的研究任务,并且需要将其与主代码联合起来,因此我遇到了我的问题。我很抱歉不知道如何更好地解释它。