2010-05-12 94 views
9

我試圖重複向量a,b次的元素。也就是說,如果y = 2,則a =「abc」應該是「aabbcc」。R中重複元素的元素

爲什麼下面的代碼示例沒有工作?

sapply(a, function (x) rep(x,b)) 

,並從plyr包,

aaply(a, function (x) rep(x,b)) 

我知道我失去了一些東西很明顯...

回答

10

假設你a是矢量,sapply將創建只需摺疊回一個向量矩陣:

a<-c("a","b","c") 
b<-3 # Or some other number 
a<-sapply(a, function (x) rep(x,b)) 
a<-as.vector(a) 

應創建以下的輸出:

"a" "a" "a" "b" "b" "b" "c" "c" "c" 
+0

忘記關閉它。這顯然有效。不知道爲什麼plyr的aaply沒有。好吧。 – bshor 2010-05-13 16:02:01

16

a不是一個向量,你要分割字符串成單字符,例如

R> paste(rep(strsplit("abc","")[[1]], each=2), collapse="") 
[1] "aabbcc" 
+2

的「每個=」代表參數也值得注意。 :-) – 2010-05-12 19:27:39

+0

我在寫這個問題時犯了一個錯誤,一個確實是一個向量,例如a = c(「a」,「b」,「c」)。如果不是,你的解決方案顯然是正確的。謝謝! – bshor 2010-05-13 16:01:16