model.matrix 不适用于多行数据框

model.matrix doesn't work for dataframe with multiple rows

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

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 是您的问题,因为它的长度为 1。如果您不想指定响应,可以使用 model.matrix(~ age + sex, df)