我正在使用dummies程序包为分类变量生成虚拟变量,其中一些具有两个以上的类别。

testdf<- data.frame(
  "A" = as.factor(c(1,2,2,3,3,1)),
  "B" = c('A','B','A','B','C','C'),
  "C"= c('D','D','E','D','D','E'))
#
#Generate dummy variables:
#
testdf<- cbind(testdf, dummy(testdf$C, sep='_'))
testdf<- cbind(testdf, dummy(testdf$B, sep='_'))

对于这两个命令,我得到:



结果似乎是正确的。能否请您提供有关警告原因的建议?

最佳答案

dummy的代码中,该函数调用

mm <- model.matrix(~x - 1, model.frame(~x - 1), contrasts = FALSE)

请注意,他们正在将“FALSE”传递给contrasts=参数(这实际上是contrasts.arg=参数)。根据?model.matrix帮助页面,这应该是对比列表。它不应该是TRUE/FALSE值。请在帮助页面?model.matrix中注意此附加消息



因此,基本上,程序包使用了错误的参数,该参数在R的早期版本中被默默忽略,但是从R 3.6开始,现在会触发警告。行为没有什么不同,但是警告是新的。似乎该软件包自2012年以来就没有更新过,因此它可能永远也不会得到更新以使警告消失。

09-06 08:31