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

问题描述 投票:0回答:1

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

我曾尝试使用{{}},但如果可以使用select包含,则会看到如下所示的问题。

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

  return(model)
}

test_func(datasets::anscombe, x1)

该函数应以单个模型作为函数(数据框,从属)传递。

r tidyverse lm
1个回答
0
投票

使用reformulate()

fun <- function(dat, y) lm(reformulate(names(dat)[grep("^x", names(dat))], response=y), data=dat)
fun(datasets::anscombe, "y1")
# Call:
#   lm(formula = reformulate(names(dat)[grep("^x", names(dat))], 
#                            response = y), data = dat)
# 
# Coefficients:
#   (Intercept)           x1           x2           x3           x4  
# 4.33291      0.45073           NA           NA     -0.09873 
© www.soinside.com 2019 - 2024. All rights reserved.