3

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

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 )
4

1 回答 1

4

你在正确的轨道上:rep是工作的功能。但试试这个:

with(mydata, rep(var1, replication))

您在apply此处使用的方式rep是在每个列上单独调用。这就像调用rep(1:4), thenrep(c(3,5,3,7))并将结果组合成matrix.

apply熟悉是一个很棒的功能,但它不是这项工作的工具。事实上,这种使用的解决方案apply会非常难看:

unlist(apply(mydata, 1, function(var1.rep) do.call(rep, unname(as.list(var1.rep)))))

@MatthewLundbergapply在评论中演示了执行此操作的适当方法。

于 2012-12-17T02:54:07.327 回答