如果我有一个类型字符的向量,我怎么能连接到字符串的值?下面是我如何使用paste():

sdata = c('a', 'b', 'c')
paste(sdata[1], sdata[2], sdata[3], sep ='')

产生“abc”。

当然,这只有在我提前知道sdata的长度时才有效。


当前回答

马特的答案绝对是正确的。然而,为了减轻喜剧效果,这里有一个替代方案:

do.call(paste, c(as.list(sdata), sep = ""))

其他回答

sdata:

gsub(", ", "", toString(sdata))

对于整数向量:

gsub(", ", "", toString(c(1:10)))

另一种方法是用胶水包装:

glue_collapse(glue("{sdata}"))
paste(glue("{sdata}"), collapse = '')

你可以使用stri_paste函数和stringi包中的collapse参数,如下所示:

stri_paste(letters, collapse='')
## [1] "abcdefghijklmnopqrstuvwxyz" 

还有一些基准:

require(microbenchmark)
test <- stri_rand_lipsum(100)
microbenchmark(stri_paste(test, collapse=''), paste(test,collapse=''), do.call(paste, c(as.list(test), sep="")))
Unit: microseconds
                                      expr     min       lq     mean   median       uq     max neval
           stri_paste(test, collapse = "") 137.477 139.6040 155.8157 148.5810 163.5375 226.171   100
                paste(test, collapse = "") 404.139 406.4100 446.0270 432.3250 442.9825 723.793   100
do.call(paste, c(as.list(test), sep = "")) 216.937 226.0265 251.6779 237.3945 264.8935 405.989   100

马特的答案绝对是正确的。然而,为了减轻喜剧效果,这里有一个替代方案:

do.call(paste, c(as.list(sdata), sep = ""))

尝试在paste函数中使用一个空的折叠参数:

粘贴(sdata, collapse = ")

感谢http://twitter.com/onelinetips/status/7491806343