R 将名称转换为字符串

R 将名称转换为字符串,r,R,我遇到了一个元编程任务,似乎它必须有一个明显和简单的答案,但我找不到一个 我有一大堆名字都用(): 我想快速将这些名称转换为字符向量: ("foo", "bar", "buzz", "zap") 我能想出的最快的方法如下: as.character(quote(c(foo, bar, buzz, zap)))[-1] # "foo" "bar" "buzz" "zap" 我必须想象有一个更干净的解决方案 编辑 可能重复,只是标题不同,所以很难发现: a。选择1 k<-"(foo

我遇到了一个元编程任务,似乎它必须有一个明显和简单的答案,但我找不到一个

我有一大堆名字都用
()

我想快速将这些名称转换为字符向量:

("foo", "bar", "buzz", "zap")
我能想出的最快的方法如下:

as.character(quote(c(foo, bar, buzz, zap)))[-1]
# "foo"  "bar"  "buzz" "zap" 
我必须想象有一个更干净的解决方案

编辑

可能重复,只是标题不同,所以很难发现: a。选择1

 k<-"(foo, bar, buzz, zap)"
    strsplit(strsplit(k,"\\(|\\)")[[1]][2],", ")[[1]]
    [1] "foo"  "bar"  "buzz" "zap" 

返回单个字符串,而不是字符串向量。谢谢您的评论。我现在已经编辑了我的答案。在buzz和zap之前有空格…加上这是一个非常激烈的regexSplit,在
,“
而不是
”,“
上删除空格。谢谢Ben和Frank。现在编辑,并建议第二个选项。您的“have”是指您使用Perl或类似的工具将
c(foo、bar、buzz、zap)
元写到程序体中?如果是这样,您可以使用该工具以更适合R的方式编写它,比如不带括号……不,我对您在R中工作的用例类型感兴趣,并将使用文本编辑器解决此类问题以节省键入时间。我不是说将参数传递到一个有很多可行解决方案的程序中。我不确定我是否理解这个问题,但也许这些是相关的:我一直在使用类似flodel的
qw
。@弗兰克:是的,这更像是解决方案的味道。根据OP,字符串被括在括号中:“(foo,bar,buzz,zap)”而不是“foo,bar,buzz,zap”。
 k<-"(foo, bar, buzz, zap)"
    strsplit(strsplit(k,"\\(|\\)")[[1]][2],", ")[[1]]
    [1] "foo"  "bar"  "buzz" "zap" 
library(stringr)
str_extract_all(k,"[aA-zZ]+")[[1]] #assuming that it only contains letters
[1] "foo"  "bar"  "buzz" "zap"
strsplit("foo, bar, buzz, zap",',')[[1]]