我正在使用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年以来就没有更新过,因此它可能永远也不会得到更新以使警告消失。