我有一个成功向量,并希望对每个值进行 binom.test。有没有比这个循环更快的方法(我有很多):
successes <-rbinom(100, 625, 1/5)
x <-NULL
for (i in 1:100) {
x <-append(x, binom.test(successes[i], 625, 1/5)$p.value)
}
最佳答案
您可以使用 sapply()
来计算每个成功值的 p.values
,而不是 for 循环。
pp <- sapply(successes, function(x) binom.test(x, 625, 1/5)$p.value)
如果您需要真正加快进程,您可以使用
data.table
包的优势。首先,将 successes
转换为 data.table
对象。然后计算每一行的 p.value。library(data.table)
dt<-data.table(successes)
dt[,pp:=binom.test(successes, 625, 1/5)$p.value,by=successes]
关于r - 更快的循环binom.test?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15475814/