如果我有一個字符類型的向量,我該如何將值連接成字符串?下面是我如何與貼(做):連接字符串/字符向量
sdata = c('a', 'b', 'c')
paste(sdata[1], sdata[2], sdata[3], sep ='')
產生。
但當然,只有當我知道SDATA時間提前的長篇作品。
如果我有一個字符類型的向量,我該如何將值連接成字符串?下面是我如何與貼(做):連接字符串/字符向量
sdata = c('a', 'b', 'c')
paste(sdata[1], sdata[2], sdata[3], sep ='')
產生。
但當然,只有當我知道SDATA時間提前的長篇作品。
馬特的答案肯定是正確的答案。然而,這裏是爲漫畫救濟性質的替代解決方案:
do.call(paste, c(as.list(sdata), sep = ""))
你真的可以在那裏工作一個apply()語句。如果你願意,我會投票給你;) – 2010-01-20 21:17:26
如果'collapse'參數不存在,這實際上是最優雅的解決方案。所以沒有太多的喜劇救濟,如果你最近實際上不得不做一些非常類似的事情:) – 2015-03-06 09:03:22
對於sdata
:
gsub(", ","",toString(sdata))
對於整數向量:
gsub(", ","",toString(c(1:10)))
這是一個危險的答案 - 如果向量的元素中有逗號空間序列,這個答案將刪除它們。 – C8H10N4O2 2016-03-18 21:08:41
馬特·特納的答案肯定是正確的答案。然而,在肯·威廉斯的答案的精神,你也可以這樣做:
capture.output(cat(sdata, sep=""))
可以使用stri_paste
功能與collapse
參數從stringi
包這樣的:
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
只需注意,如果'sdata'可以包含全部長度相同或長度可變的字符串,則可以粘貼(sdata,sep ='',colla應該使用pse ='')'來避免意外的結果。 – zelanix 2014-01-19 22:03:46