我希望能夠在函數內調用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