创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.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" 

假设你想要你的输出在一个string(而不是一个字符向量),你可以尝试:

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

这给了你单引号而不是双引号,但它基本上是你想要的。

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

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

这应该打印出你想要的双引号。

除了shQuote ,请参阅函数sQuotedQuote来分别在单引号和双引号中包装文本。 您还需要设置options(useFancyQuotes=FALSE)以获取纯文本(单向)ASCII引号。