【发布时间】:2015-08-31 08:23:34
【问题描述】:
我正在尝试在 R 中找到一种方法来随机子集一些数据(生态研究区域中合适栖息地的比例),计算值 > 0 的样本的平均值和比例,然后将这些值保存或附加到一个数据框。然后我想重复多次(例如 1000 次)。标准引导或重采样包不起作用,因为我需要计算出现频率以及子样本的平均值。我知道“应用”函数,但是这些函数会在整个数据帧上循环,而我试图在重复的子样本上执行它。我知道我需要一些代码来获取循环中的计算值以保存和输出但有问题。 “habprop”是数据框(“数据”)中的一列,我想计算并保存正值的平均值和比例。
for(i in 1000 {
randsample=data[sample(1:nrow(data), 50, replace=FALSE),]
m=mean(randsample$habprop)
randsamplepos=subset(randsample, habprop > 0)
habfreq=(nrow(randsamplepos)/nrow(randsample))
})
【问题讨论】:
-
为什么标准引导程序不起作用?您可以将任意函数传递给
boot并返回值列表 -
在循环外创建一个空列表
lst <- list(),然后在底部lst[i] <- habfreq。如果habfreq是每次迭代一个值,您可以简化为v1 <- c()和v1[i] -
另外,如果你不打算使用
m,为什么要在for循环中计算1000次呢? -
最好创建一个reproducible example,其中包含样本输入和所需的输出。描述一下您所说的“有问题”是什么意思——究竟什么是行不通的?
标签: r for-loop subsampling