我希望能够在函数内调用lm
,并将weights
变量指定为传递给外部函数的参数,然后传递给lm
。下面是一个可重复使用的示例,其中调用在函数外部调用lm
时生效,但在从包装器函数内调用时生成错误消息Error in eval(expr, envir, enclos) : object 'weightvar' not found
。在R中将参数传递给lm函数
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 2014-12-03 00:10:57
[R:将参数传递给R函数内部的glm]的可能重复(http://stackoverflow.com/questions/10858318/r-pass-argument-to-glm-inside-an-r-function) – user20650 2014-12-03 00:26:42