对glm
的前两次调用正常工作,而最后一次调用则抛出错误。
为什么会出现这种情况,如果我想为公式使用字符串,并指定一个子集,是否有任何已知的解决方法?用例是我想在我自己的函数中将公式作为字符串传递,而不包装和展开原始公式。
library(ISLR)
foo =function() {
train=sample(10000, 5000, replace=F)
# both work
glm.fit = glm('default~income + balance', data=Default, family=binomial)
glm.fit = glm(default~income + balance, data=Default, family=binomial, subset=train)
# Does not work.
#glm.fit = glm('default~income + balance', data=Default, family=binomial, subset=train)
}
foo()
错误看起来像这样
Error in eval(expr, envir, enclos) : object 'train' not found
Calls: foo ... eval -> model.frame -> model.frame.default -> eval -> eval
Execution halted
更新:我已将示例放在函数中,因为它似乎只是函数内部的问题。