我注意到由于某种原因,klaR程序包中的程序会在尝试在data.frame上执行时产生错误,其中一列是一个单级因子。这是一个例子:
a<-factor(rep(c("BAD", "GOOD"), 5))
b<-factor(rep(c(1,2), 5))
c<-factor(rep(c(2,3), 5))
d<-factor(rep(1,10))
df<-data.frame(a=a, b=b, c=c, d=d)
现在执行
woe(a~., data = df[,-4])
不会产生任何错误,而
woe(a~., data = df)
会因以下情况而崩溃:
Error in applywoes(object[[i]], x.fact[, which(names(x.fact) == names(object)[i])]) :
Factor Levels do not match!
In addition: Warning message:
In is.na(e2) : is.na() applied to non-(list or vector) of type 'NULL'
对我来说似乎问题是d
只有一个级别作为因素。尽管如此,对于这样一个因素,悲惨的定义应该给出0的值......
这是程序实现中的错误还是(出于某些奇怪的原因)故意行为?
答案 0 :(得分:1)
我猜这不是故意的行为。从我在Git(https://github.com/cran/klaR/blob/master/R/woe.R)上看到的内容,诸如“woe.default”之类的功能通常从几个常见错误案例的检查开始。显然我会检查你得到的错误。 你应该直接联系这个软件包背后的团队以获得正确的答案。