【发布时间】:2015-07-31 17:07:37
【问题描述】:
我必须做大量的模拟,这需要很多时间。我认为可以通过data.table 减少处理时间。如何将mdply(data.frame(prob=seq(from = 0.1, to = 0.9, by = 0.1)), rbinom, n = 5, size = 2) 的结果存储到data.table 而不先将其输出保存到data.frame。
library(plyr)
df1 <- mdply(data.frame(prob=seq(from = 0.1, to = 0.9, by = 0.1)), rbinom, n = 5, size = 2)
library(data.table)
dt1 <- data.table(df1)
已编辑
我知道我可以使用setDT(df1) 来避免创建dt1。然而,主要问题是关于mdply,它创建了一个data.frame,这会消耗大量时间。
【问题讨论】:
-
如果您使用
setDT(df1)它会将df1“通过引用”转换为 data.table 并且您不需要分配结果/创建另一个对象(您可以查看有关它)。我不读 plyrish,所以我无法评论改变它。 -
是的,我知道我可以使用
setDT(df1)来避免创建dt1。然而,主要问题是关于mdply,它创建了一个data.frame。 -
在运行
rbinom之前为什么不把它变成data.table? -
好的,现在我明白了。一个普遍的观点:使用矩阵进行模拟要快得多。因此,如果您关心处理时间,请学习使用矩阵而不是包。
标签: r data.table plyr