创建逗号分隔的矢量

时间:2011-06-14 17:10:15

标签: r

我有一个数字向量,一个,我正在尝试将其变成一个字符向量 每个元素用逗号分隔。

> one = c(1:5)
> paste(as.character(one), collapse=", ")
[1] "1, 2, 3, 4, 5"
> paste(as.character(one), sep="' '", collapse=", ")
[1] "1, 2, 3, 4, 5"

但是,我希望输出看起来像:

"1", "2", "3", "4", "5" 

我是否遗漏了粘贴功能中的一些参数? 救命啊!?

6 个答案:

答案 0 :(得分:72)

shQuote可能是最好的方法。具体来说,这可以获得您想要的输出:

cat(paste(shQuote(one, type="cmd"), collapse=", "))

如果单引号可以,您可以使用:

paste(shQuote(one), collapse=", ")

type="cmd"实际上提供了转义引号,这对于大多数情境来说实际上都很有用,但如果你真的想用未转义的引号显示它,cat就会提供。{/ p>

答案 1 :(得分:32)

你说你想要一个带有那个输出的字符向量,但是那些发现这个问题的人可能正在寻找其中一个函数:

首先,一种让输出准备好输入到R的方法;这将是dput

> dput(as.character(one))
c("1", "2", "3", "4", "5")

其次,输出csv文件的方法是write.csvwrite.table。这些函数使用此处未使用的参数file直接输出到文件。

> write.table(matrix(as.character(one),nrow=1), sep=",",
              row.names=FALSE, col.names=FALSE)
"1","2","3","4","5"

> write.csv(matrix(as.character(one),nrow=1),row.names=FALSE)
"V1","V2","V3","V4","V5"
"1","2","3","4","5"

答案 2 :(得分:11)

假设您想要输出字符串(而不是字符矢量),您可以尝试:

paste("'",as.character(one),"'",collapse=", ",sep="")

这会为你提供数字而不是双引号的单引号,但它基本上就是你想要的。

你总是可以逃脱以获得双引号:

rs <- paste("\"",as.character(one),"\"",collapse=", ",sep="")
cat(rs)

应该用双引号打印出你想要的内容。

答案 3 :(得分:4)

除了shQuote之外,请参阅函数sQuotedQuote以分别用单引号和双引号括起文本。您还需要设置options(useFancyQuotes=FALSE)以获得普通(单向)ASCII引号。

答案 4 :(得分:1)

如果您想使用paste功能,只需添加诺亚的答案:

paste(shQuote(one, type="sh"), collapse=", ")

应该给你:

[1] '1','2','3','4','5'

答案 5 :(得分:1)

与toString类似的东西

toString(paste0("'",1:10,"'") )