是否有将每个 reserved_list[[i]] 键入 R 中的 lm 函数的快捷方式?

Is there a shortcut to typing each reserved_list[[i]] into an lm function in R?

我有一个保留列表。这些保留列表中的每一个都对应于一个自变量。下面加粗的部分有没有捷径

为了清楚起见,我需要找到一种编写快捷方式的方法: lm(y~res_list[[1]]+res_list[[2]]+res_list[[3]]+....+res_list[[10]]

如果您想使用 res_list 的所有元素(除了 y,如果 res_list 有一个名为 y 的元素),那么@RitchieSacramento 的建议

lm(y ~ ., data = res_list)

应该可以。 . 的语义记录在 ?formula.

否则,您始终可以通过编程方式构建公式:

f <- function(formula, index) {
  n <- length(formula)
  rhs <- formula[[n]]
  l <- lapply(index, function(i) bquote(.(rhs)[[.(i)]]))
  plus <- function(x, y) call("+", x, y)
  formula[[n]] <- Reduce(plus, l)
  formula
}

f(y ~ res_list, 1:10)
y ~ res_list[[1L]] + res_list[[2L]] + res_list[[3L]] + res_list[[4L]] + 
    res_list[[5L]] + res_list[[6L]] + res_list[[7L]] + res_list[[8L]] + 
    res_list[[9L]] + res_list[[10L]]
f(hello ~ world, c(1L, 2L, 3L, 5L, 8L))
hello ~ world[[1L]] + world[[2L]] + world[[3L]] + world[[5L]] + 
    world[[8L]]