由r中的其他列复制数字

时间:2012-12-17 02:50:06

标签: r replication rep

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

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 )

1 个答案:

答案 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执行此操作的适当方法。