我想重复一个包含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
答案 0 :(得分:3)
我使用sapply
和unlist
:
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)] )
回收,以便在第一种情况下省略每第三项,在第二种情况下选择每三项情况下。