model.matrix不适用于具有多行

时间:2018-04-13 16:02:47

标签: r rbind

我有一个非常简单的数据框,我希望将其变成一个矩阵。

df <- data.frame(age=c(50, 60), sex=factor(c('M', 'F')))

但是,当我尝试运行model.matrix时,它失败了:

model.matrix(1 ~ age + sex, df)

Error in model.frame.default(object, data, xlev = xlev) : 
  variable lengths differ (found for 'age')

但是,如果我一次跑一行就没问题。

model.matrix(1 ~ age + sex, df[1, ])

 (Intercept) age sexM
1           1  50    1
attr(,"assign")
[1] 0 1 2
attr(,"contrasts")
attr(,"contrasts")$sex
[1] "contr.treatment"

我已经得到了我希望在行上使用lapplydo.call('rbind', ...)将其重新组合在一起的内容,但我必须错过一些正确的内容吗?

1 个答案:

答案 0 :(得分:1)

1是您的问题,因为它是长度1.如果您不想指定回复,可以使用model.matrix(~ age + sex, df)