在klaR包中使用woe过程时出错

时间:2014-11-27 12:56:43

标签: r

我注意到由于某种原因,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的值......

这是程序实现中的错误还是(出于某些奇怪的原因)故意行为?

1 个答案:

答案 0 :(得分:1)

我猜这不是故意的行为。从我在Git(https://github.com/cran/klaR/blob/master/R/woe.R)上看到的内容,诸如“woe.default”之类的功能通常从几个常见错误案例的检查开始。显然我会检查你得到的错误。 你应该直接联系这个软件包背后的团队以获得正确的答案。