我希望能在函数内调用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"
gear
时会得到什么?什么也没有,因为它没有被全局定义,而且你的olswrapper
不知道在df
中查找它。让它工作的一种方法是将weightvar = "gear"
作为字符传递,然后在你的lm
调用中使用weights = df[weightvar]
。 - Gregor Thomas