创build一个逗号分隔的vector
我有一个数字向量,其中一个,我试图变成一个字符向量,每个元素之间用逗号分隔。
> 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"
我是否缺less粘贴function的一些参数? 帮帮我!?
shQuote
可能是这样做的最好方法。 具体来说,这会得到你想要的输出:
cat(paste(shQuote(one, type="cmd"), collapse=", "))
如果单引号是好的,你可以使用:
paste(shQuote(one), collapse=", ")
type="cmd"
实际上提供了转义引号,这对于大多数上下文来说实际上是有用的,但是如果你真的想用非转义的引号把它显示出来的话, cat
提供了。
你说你想要一个带有这个输出的字符向量,但是其他发现这个问题的人可能正在寻找这些函数中的一个:
首先,让输出准备好input到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"
假设你想要你的输出在一个string(而不是一个字符向量),你可以尝试:
paste("'",as.character(one),"'",collapse=", ",sep="")
这给了你单引号而不是双引号,但它基本上是你想要的。
你总是可以逃脱得到双引号:
rs <- paste("\"",as.character(one),"\"",collapse=", ",sep="") cat(rs)
这应该打印出你想要的双引号。
除了shQuote
,请参阅函数sQuote
和dQuote
来分别在单引号和双引号中包装文本。 您还需要设置options(useFancyQuotes=FALSE)
以获取纯文本(单向)ASCII引号。