我有一个data.frame
,其中每列代表不同的个体,每行代表所吃的不同食物。
我的目标是通过引导对每一列重新采样,然后使用定义的函数计算每个个体(数据列)的指标分数和 C.I.。
我已经在单个向量上成功完成了此操作,但无法弄清楚如何将引导和度量函数应用于数据框中的各个列。下面是我必须将其应用于单个向量的代码:
data.1 <- c(10, 50, 200, 54, 6) ## example vector
## create function
metric.function <- function(x){
p <- x/sum(x)
dap <- 1/sum(p^2)
return(dap)
}
vect <- c() ## empty vector for bootstrap data
for (i in 1:1000){
data.2 <- sample(data.1, replace = TRUE) ##bootstrap sample ##
vect[i] <- metric.function (data.2) ## apply metric.function ##
}
summary(vect) ## summary
quantile(vect, probs = c(0.025, 0.975)) ## C.I.
这对于单个向量来说效果很好,但我想将其独立应用于数据框中的多个列,例如在下面的 example.df
中,我想将其应用于 x1 :x10
独立产生 10 个指标分数和 10 个 C.I.s
example.df<-data.frame(replicate(10,sample(0:50,10,rep=TRUE)))
我尝试将 vector
项更改为 data.frame
并使用 apply
和 dply
但无法弄清楚,任何人都可以建议如何去做或为我指出有用的指南/网站等方向吗?
最佳答案
这是使用replicate
和sapply
的绝佳机会。
replicate(1000, sapply(example.df, function(x)
metric.function(sample(x, replace = TRUE))))
sapply
将按列操作(假设 data.frame
在某种意义上是列的列表
);一旦我们在 sapply
中隔离了一列,我们只需对其重新采样并应用我们的指标。
关于r - 在 R 中独立引导数据框列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32940822/