【发布时间】:2015-01-31 09:31:31
【问题描述】:
我希望能够在函数内调用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中调用makeweights = df[weightvar]。