我正在尝试理解一个R脚本,我遇到了这一行:
train <- cbind(train[,c(1,2)],model.matrix(~ -1 + .,train[,-c(1,2)]))
train是一个data.frame。我认为它是在尝试通过某种矩阵操作将前两列火车与所有其他列组合在一起。但是,我无法准确理解模型公式(?)似乎在做什么。从脚本中的注释,它的目的是将所有其他列转换为0和1,但我不知道如何。如果有人能澄清这将是伟大的。谢谢!
答案 0 :(得分:4)
来自?formula
:
-
运算符会删除指定的术语... [i] t也可用于删除截距项:拟合线性模型时y ~ x - 1
指定通过原点的直线。
此外:
公式中有
.
的两种特殊解释。通常的一个是在模型拟合函数的数据参数的上下文中,并且意味着“所有列都不在公式中”
所以,你有一个公式,指明响应是train[,-c(1,2)]
中所有变量的函数,在原点有一个截距。