我想重複一個包含11個元素3,2和1次的矢量,並嘗試了以下尷尬的代碼,它給了我想要的東西(一個66的矢量。我該怎麼做?在一個更好的辦法重複一個矢量3,2,1時間
myd<-paste(letters[1:11])
mye<-rep(myd,each =3)
myf<-rep(myd,each =2)
myg<-rep(myd,each =1)
myh<-c(mye,myf,myg)
length(myh)
[1] 66
我想重複一個包含11個元素3,2和1次的矢量,並嘗試了以下尷尬的代碼,它給了我想要的東西(一個66的矢量。我該怎麼做?在一個更好的辦法重複一個矢量3,2,1時間
myd<-paste(letters[1:11])
mye<-rep(myd,each =3)
myf<-rep(myd,each =2)
myg<-rep(myd,each =1)
myh<-c(mye,myf,myg)
length(myh)
[1] 66
我會使用sapply
和unlist
:
dat = unlist(sapply(3:1, function(x) rep(myd, each = x)))
all.equal(dat, myh)
[1] TRUE
使用sapply
:
unlist(sapply(3:1,function(x)rep(myd,each=x)))
這不是一個真正的嚴肅的參賽者。只是想表明,paste()
操作myd
完全是多餘的,而且你可以從序列圖案選擇:
mye <-rep(letters[1:11], each =3)
myh <-c(mye, mye[c(TRUE,TRUE, FALSE)] , mye[c(TRUE,FALSE, FALSE)])
的C(TRUE,TRUE,FALSE)和C(TRUE,FALSE,FALSE)將通過"["
得到回收,以便在第一種情況下每三個項目被省略,並且在第二種情況下每三個項目被選擇。
感謝所有這個優雅的代碼。雖然Paul和zx8754的代碼基本相同,但我會接受Paul的,因爲他是第一個迴應。 – Meso
+1讓我開心,當我得到與專業人士相同的答案! – zx8754
我也爲你的優秀解決方案+1了。 –