R建模包是否将字符变量视为无序因子?

R建模包是否将字符变量视为无序因子?,r,categorical-data,R,Categorical Data,我有属于字符列的分类变量。例如,值均为“是”或“否”的字符列。R建模包是否会正确地将它们作为名义分类变量处理,即使我将它们作为字符列,或者这些包是否要求它们是无序因子?每个函数都可以自由地执行它想要的操作,但是如果函数使用model.matrix,那么它会将字符串作为因子处理 2级 3级 跟进@GaborGrothendieck的答案:答案是“通常是”,因为大多数统计建模包都使用model.matrix()来处理各种类型的预测、交互等 也就是说,最好的做法可能是显式地转换为因子,这样您就可以控制

我有属于字符列的分类变量。例如,值均为“是”或“否”的字符列。R建模包是否会正确地将它们作为名义分类变量处理,即使我将它们作为字符列,或者这些包是否要求它们是无序因子?

每个函数都可以自由地执行它想要的操作,但是如果函数使用
model.matrix
,那么它会将字符串作为因子处理

2级 3级
跟进@GaborGrothendieck的答案:答案是“通常是”,因为大多数统计建模包都使用
model.matrix()
来处理各种类型的预测、交互等


也就是说,最好的做法可能是显式地转换为因子,这样您就可以控制/知道发生了什么。缺点是什么?明确转换为因子还允许您控制级别、对比度、,等等。

大多数标准R建模软件包是否使用
model.matrix
?很可能是这样,但您必须查看源代码才能绝对确定。@BenBolker我刚刚在密切投票审查中发现了这个问题,而事实上您的评论应该是答案。所以问题是“大多数R建模包是否会自动将字符串转换为类别,它们是否正确?”答案是“如果您希望‘是’、‘是’、‘是’、‘Y’大小写合并或前导/尾随空格被去除,则不会”。因此,不要依赖于此,comvert strings->categoricals会自己进行分类,并检查它们只有(比如)两个基数级别,和/或所有NAs是否也正确转换。
x2 <- c("yes", "no", "yes")
model.matrix(~ x2)
  (Intercept) xyes
1           1    1
2           1    0
3           1    1
attr(,"assign")
[1] 0 1
attr(,"contrasts")
attr(,"contrasts")$x
[1] "contr.treatment"
x3 <- letters[1:3]
model.matrix(~ x3)
  (Intercept) xxb xxc
1           1   0   0
2           1   1   0
3           1   0   1
attr(,"assign")
[1] 0 1 1
attr(,"contrasts")
attr(,"contrasts")$xx
[1] "contr.treatment"