我正在使用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='_'))
对于这两个命令,我都会得到:
Warning message: In model.matrix.default(~x - 1, model.frame(~x - 1), contrasts = FALSE) : non-list contrasts argument ignored
结果似乎正确。您能否就警告原因提出建议?
答案 0 :(得分:3)
在dummy
的代码中,该函数调用
mm <- model.matrix(~x - 1, model.frame(~x - 1), contrasts = FALSE)
请注意,他们正在将“ FALSE”传递给contrasts=
参数(实际上是contrasts.arg=
参数)。根据{{1}}帮助页面,这应该是对比列表。它不应该是TRUE / FALSE值。请注意帮助页面?model.matrix
鉴于无效的compares.args总是被忽略,但是从R版本3.6.0开始会对其发出警告
因此,基本上,程序包错误地使用了一个参数,该参数在R的早期版本中被忽略,但是从R 3.6开始,现在会触发警告。行为没有什么不同,但是警告是新的。似乎该软件包自2012年以来就没有更新过,因此它可能永远也不会得到更新以使警告消失。