我希望创建一个函数,可以在给定数据集的不同变量上运行回归模型(例如使用lm)。在该函数中,我将指定使用的数据集,因变量y和自变量x作为参数。我希望这是一个函数而不是循环,因为我想在脚本的各个位置调用代码。我的函数看起来像这样:
这个函数显然无法正常工作,因为lm函数不将y和x识别为数据集的变量。
我做了一些研究,偶然发现了以下有用的vignette:使用dplyr进行编程。这篇vignette提供了与我面临的类似问题的以下解决方案:
运行这段代码会出现以下错误信息:
谢谢,
Joost。
lmfun <- function(data, y, x) {
lm(y ~ x, data = data)
}
这个函数显然无法正常工作,因为lm函数不将y和x识别为数据集的变量。
我做了一些研究,偶然发现了以下有用的vignette:使用dplyr进行编程。这篇vignette提供了与我面临的类似问题的以下解决方案:
df <- tibble(
g1 = c(1, 1, 2, 2, 2),
g2 = c(1, 2, 1, 2, 1),
a = sample(5),
b = sample(5)
)
my_sum <- function(df, group_var) {
group_var <- enquo(group_var)
df %>%
group_by(!! group_var) %>%
summarise(a = mean(a))
}
我知道lm不是dplyr包中的函数,但我想找出类似于这个解决方案的方法。我尝试了以下方法:
lmfun <- function(data, y, x) {
y <- enquo(y)
x <- enquo(x)
lm(!! y ~ !! x, data = data)
}
lmfun(mtcars, mpg, disp)
运行这段代码会出现以下错误信息:
有没有人知道如何修改代码使其正常工作?在 is_quosure(e2) 函数中出错:参数“e2”缺失,无默认值
谢谢,
Joost。