重复矢量3,2,1次

时间:2013-11-20 20:06:19

标签: r repeat

我想重复一个包含3个,2个和1个时间的11个元素的向量,并尝试了以下尴尬的代码,它给了我想要的东西(66的向量。我怎么能以更好的方式做到这一点?

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

3 个答案:

答案 0 :(得分:3)

我使用sapplyunlist

dat = unlist(sapply(3:1, function(x) rep(myd, each = x)))
all.equal(dat, myh)
[1] TRUE

答案 1 :(得分:3)

使用sapply

unlist(sapply(3:1,function(x)rep(myd,each=x)))

答案 2 :(得分:3)

这不是一个真正的参与者。只是想表明对paste()的{​​{1}}操作完全是多余的,并且您可以从序列中获得图案选择:

myd

c(TRUE,TRUE,FALSE)和c(TRUE,FALSE,FALSE)将被mye <-rep( letters[1:11], each =3) myh <-c(mye, mye[c(TRUE,TRUE, FALSE)] , mye[c(TRUE,FALSE, FALSE)] ) 回收,以便在第一种情况下省略每第三项,在第二种情况下选择每三项情况下。