R 在数据帧的行上循环以模拟
这更像是一个R中的编程问题,而不是任何概念问题。我试过了,但我在R方面缺乏专业知识,这让我很沮丧: 我有一个数据帧df,列ID为xR01、xR02、nR01、nR02、xRsum,我想使用超几何函数生成模拟数据。为一个值执行此操作很简单:R 在数据帧的行上循环以模拟,r,loops,simulation,R,Loops,Simulation,这更像是一个R中的编程问题,而不是任何概念问题。我试过了,但我在R方面缺乏专业知识,这让我很沮丧: 我有一个数据帧df,列ID为xR01、xR02、nR01、nR02、xRsum,我想使用超几何函数生成模拟数据。为一个值执行此操作很简单: df$xSim01 = rhyper(1, df$nR01, df$nR02, df$xRsum) 但我的问题是,如果我以上面的形式应用它,它似乎为所有20000行提供了一个值。这让我觉得如果我在每一行上循环,它可能会正常工作。那么,使用apply、with
df$xSim01 = rhyper(1, df$nR01, df$nR02, df$xRsum)
但我的问题是,如果我以上面的形式应用它,它似乎为所有20000行提供了一个值。这让我觉得如果我在每一行上循环,它可能会正常工作。那么,使用apply、with或任何其他函数最有效的方法是什么呢
我的第二个问题是:我将首先模拟这两个20000行以获得第一个模拟数据集,然后希望获得该模拟列的平均值,并以某种方式存储该平均值,并重复模拟N次。因此,我们需要一种嵌套循环,并希望找到有效的方法来节省计算时间。在适当的代码在R将不胜感激。谢谢
dat.sim$xR01 <- rhyper(1, dat.obs$nR01, dat.obs$nR02, dat.obs$xRsum)
dat.sim$xR01随机抽取功能均为矢量化:
df$xSim01 = rhyper(20000, df$nR01, df$nR02, df$xRsum)
查看replicate
,了解如何重复执行此操作并避免循环。您需要创建自己的函数来绘制观察值并取平均值。比如:
draw.mean <- function(dat,n) {
return( mean(rhyper(n,dat$nR01,dat$nR02,dat$xRsum)) )
}
replicate(1000,draw.mean(dat=df,n=20000))
draw.mean