如果您不想要显式循环,则可以使用 purrr 包中的 map。这将做你想要的。以下是基于您的信息的示例代码。可能不是最好的代码,但应该让你开始。 glms 存储在my_glms 列表对象中。更多信息请阅读 purrr 和 broom 的小插曲。
library(purrr)
sample <- data.frame(Y = c(0,0,0,0,1,1,1,1),
x_1 = c(1,2,3,4,5,6,7,8),
x_2 = c(2,3,4,5,6,7,8,9))
my_glms <- map(sample[,-1], #remove Y otherwise glm also on Y
~ glm(Y ~ .x, data = sample, family = binomial))
#using the tidy function from broom
library(broom)
map(my_glms, tidy)
$x_1
term estimate std.error statistic p.value
1 (Intercept) -206.12214 365130.9 -0.0005645158 0.9995496
2 .x 45.80492 80643.9 0.0005679899 0.9995468
$x_2
term estimate std.error statistic p.value
1 (Intercept) -251.92706 445370.6 -0.0005656572 0.9995487
2 .x 45.80492 80643.9 0.0005679899 0.9995468
当然,所有这些都可以在 1 行代码中完成,但这显示了步骤,您可以根据需要进行调整。