我有一个数字向量,一个,我正在尝试将其变成一个字符向量 每个元素用逗号分隔。
> 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"
我是否遗漏了粘贴功能中的一些参数? 救命啊!?
答案 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.csv
或write.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
之外,请参阅函数sQuote
和dQuote
以分别用单引号和双引号括起文本。您还需要设置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,"'") )