我有一个成功向量,并希望对每个值进行 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/

10-10 11:40