r语言 - 在函数内使用 "alm()" 但不在函数外部使用时出错"object not found"



我正在使用greybox包中的alm()函数来拟合位置和比例模型。但是,每当我将一个变量传递给alm()formula =参数时,就会出现错误。此发生在函数内部。它在外部工作。返回的错误是">作为.公式(表单(出错:找不到对象'form'"。下面是一个可重复的例子。有什么解决办法吗?可复制示例:

library(greybox)
df <- data.frame(x = rnorm(100),
y = rnorm(100))
test_string = "y ~ x"
alm(as.formula(test_string), data = df)
#Passing formula to alm() works!
test_fun = function(form, df){
#alm(scaled_meaning ~ short_dis_km, data = x)
alm(as.formula(form), data = df)
}
test_fun(form = test_string, df = df)
#Passing formula to alm() does not work!

这是有效的,但它是肮脏的工作。我认为这是一个与全球环境有关的问题。如果您将表单声明为全局变量,则可以避免此问题。但它并不干净。

library(greybox)
df <- data.frame(x = rnorm(100),
y = rnorm(100))
test_string = "y ~ x"
alm(as.formula(test_string), data = df)
#Passing formula to alm() works!
test_fun = function(form, df){
#alm(scaled_meaning ~ short_dis_km, data = x)
form <<- form
f<-alm(as.formula(form), data = df)
rm(form)
f
}
test_fun(form = test_string, df = df)
#Passing formula to alm() does not work!

最新更新