使用函数参数并将其传递给 lm 公式

Using a function parameter and passing it in to lm formula

我正在尝试创建一个函数,将参数作为因变量传入,而自变量保持不变。

我曾尝试使用 {{}},但如果 select 包含可能,则问题如下所示。

test_func <- function(dataframe, dependent){
  model <- tidy(lm({{ dependent }} ~ . - select(contains("x")), data = dataframe))

  return(model)
}

test_func(datasets::anscombe, x1)

该函数应作为具有单个模型的函数(数据帧,从属)传递。

使用reformulate().

f <- function(d, y) lm(reformulate(names(d)[grep("x", names(d))], response=y), data=d)

f(datasets::anscombe, "y1")
# Call:
#   lm(formula = reformulate(names(d)[grep("x", names(d))], response = y), 
#      data = d)
# 
# Coefficients:
#   (Intercept)           x1           x2           x3           x4  
#       4.33291      0.45073           NA           NA     -0.09873