如何在以下情况下使用复制功能:
mydata <- data.frame (var1 = 1:4, replication = c(3, 5, 3, 7))
mydata
var1 replication
1 1 3
2 2 5
3 3 3
4 4 7
我想要一个这样的结果:
1,1,1, 2,2,2,2,2, 3,3,3, 4,4,4,4,4,4,4
1重复3次,2次重复5次,依此类推
我尝试过应用功能,不做任何好事。apply (mydata,2,rep )
答案 0 :(得分:4)
你走在正确的轨道上:rep
是这项工作的功能。但试试这个:
with(mydata, rep(var1, replication))
您在此使用apply
的方式,每个列都会分别调用rep
。这就像调用rep(1:4)
,然后调用rep(c(3,5,3,7))
,并将结果合并到matrix
。
apply
是一个很熟悉的功能,但它不是这项工作的工具。事实上,使用apply
解决这个问题的方法非常难看:
unlist(apply(mydata, 1, function(var1.rep) do.call(rep, unname(as.list(var1.rep)))))
@MatthewLundberg在评论中演示了使用apply
执行此操作的适当方法。