我希望能够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)
基于评论,gear未在全球范围内定义。lm当您指定正在使用的数据时,它在独立调用中工作,因此lm知道gear从df.
然而,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)
| 归档时间: |
|
| 查看次数: |
2944 次 |
| 最近记录: |