是否有将每个 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]]
我有一个保留列表。这些保留列表中的每一个都对应于一个自变量。下面加粗的部分有没有捷径
为了清楚起见,我需要找到一种编写快捷方式的方法: 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]]