创建逗号分隔的矢量

ATM*_*hew 76 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"
Run Code Online (Sandbox Code Playgroud)

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

"1", "2", "3", "4", "5" 
Run Code Online (Sandbox Code Playgroud)

我错过了粘贴功能中的一些参数吗?救命!?

Noa*_*oah 82

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

cat(paste(shQuote(one, type="cmd"), collapse=", "))
Run Code Online (Sandbox Code Playgroud)

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

paste(shQuote(one), collapse=", ")
Run Code Online (Sandbox Code Playgroud)

type="cmd"实际上提供了转义引号,这对大多数情况来说实际上是有用的,但是如果你真的想用未转义的引号显示它,请cat提供.

  • `paste(shQuote(one), Collapse=", ")` 给出 `[1] "\"1\", \"2\", \"3\", \"4\", \"5\" "`,不是单引号括起来的变体。 (2认同)

Aar*_*ica 37

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

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

> dput(as.character(one))
c("1", "2", "3", "4", "5")
Run Code Online (Sandbox Code Playgroud)

第二,输出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"
Run Code Online (Sandbox Code Playgroud)


jor*_*ran 13

假设您希望输出字符串(而不是字符向量),您可以尝试:

paste("'",as.character(one),"'",collapse=", ",sep="")
Run Code Online (Sandbox Code Playgroud)

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

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

rs <- paste("\"",as.character(one),"\"",collapse=", ",sep="")
cat(rs)
Run Code Online (Sandbox Code Playgroud)

应该用双引号打印出你想要的东西.


Fer*_*oao 5

与 toString 类似的东西

toString(paste0("'",1:10,"'") )
Run Code Online (Sandbox Code Playgroud)