在以下情况下如何使用复制功能:

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/

10-14 18:06