在函数内将参数传递给 R 中的 lm

Mic*_*ael 5 r lm

我希望能够lm在函数内调用并将weights变量指定为传递给外部函数的参数,然后传递给lm. 下面是一个可重现的示例,如果调用lm在函数外部进行,则调用有效,但从Error in eval(expr, envir, enclos) : object 'weightvar' not found包装函数内部调用时会产生错误消息。

olswrapper <- function(form, weightvar, df){
  ols <- lm(formula(form), weights = weightvar, data = df)
  }

df <- mtcars

ols <- lm(mpg ~ cyl + qsec,  weights = gear, data = df)
summary(ols)

ols2 <- olswrapper(mpg ~ cyl + qsec,  weightvar = gear, df = df)
#Produces error: "Error in eval(expr, envir, enclos) : object 'weightvar' not found"
Run Code Online (Sandbox Code Playgroud)

tos*_*pig 3

基于评论,gear未在全球范围内定义。lm当您指定正在使用的数据时,它在独立调用中工作,因此lm知道geardf.

然而,gear它本身并不存在于该独立lm函数之外。输出显示了这一点gear

> gear
Error: object 'gear' not found
Run Code Online (Sandbox Code Playgroud)

您可以使用将 传递gear到函数中df$gear

weightvar <- df$gear
ols <- olswrapper(mpg ~ cyl + qsec, weightvar , df = df)
Run Code Online (Sandbox Code Playgroud)