我有一个非常简单的数据框,我希望将其变成一个矩阵。
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"
我已经得到了我希望在行上使用lapply
并do.call('rbind', ...)
将其重新组合在一起的内容,但我必须错过一些正确的内容吗?
答案 0 :(得分:1)
1
是您的问题,因为它是长度1.如果您不想指定回复,可以使用model.matrix(~ age + sex, df)
。