考虑以下演示数据:
set.seed(1)
n <- 1000000
x1 <- rnorm(n)
x2 <- rnorm(n)
x3 <- rnorm(n)
如果我用 构建矩阵mt
,model.matrix()
则需要永远:
system.time(mt <- model.matrix(~x1+x2+x3))
usuário sistema decorrido
0.916 0.185 1.135
但是如果我对矩阵做同样的事情,它会非常快:
system.time(mt2 <- matrix(c(rep(1, n), x1, x2, x3), byrow=FALSE, ncol=4))
usuário sistema decorrido
0.085 0.021 0.105
为什么有区别?是什么让model.matrix()
慢速对于lm()
相关功能真的很有必要?