在以下情况下如何使用复制功能:
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函数,没有做任何好事。
apply (mydata,2,rep )
最佳答案
你在正确的轨道上: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
执行此操作的适当方法。关于通过 r 中的其他列复制数字,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13907678/