8

我正在使用 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

结果似乎是正确的。您能否就警告的原因提出建议?

4

1 回答 1

21

在 的代码中dummy,函数调用

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

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

尽管无效的 contrasts.args 总是被忽略,但自 R 版本 3.6.0 起就警告它们

所以基本上这个包错误地使用了一个在以前版本的 R 中被忽略的参数,但是从 R 3.6 开始现在会触发一个警告。行为没有任何不同,但警告是新的。看起来该软件包自 2012 年以来没有更新,因此它可能永远不会更新以使警告消失。

于 2019-06-17T18:57:25.090 回答