我正在尝试运行线性回归,我想考虑所有输入功能以及它们的正方形。对于简单的线性回归,我可以做到
lm(y~.,data=MyData)
对于具有少量变量的数据集,我可以
lm(y~poly(x1,2)+poly(x2,2), data=myData)
但是,如果我有很多输入功能,如何在没有明确列出每个功能的情况下简明扼要地执行此操作?我尝试了以下操作但导致语法错误。
lm(y~poly(.,2), data=myData)
答案 0 :(得分:1)
您可以通过构造适当的字符串来创建公式:
formula_string = paste(sprintf('y ~ poly(1,%d)', 1:2), collapse = " + ")
formula_string
[1] "y ~ poly(1,1) + y ~ poly(1,2)"
as.formula(formula_string)
y ~ poly(1, 1) + y ~ poly(1, 2)
lm(as.formula(formula_string), data = myData)
请注意,不需要使用as.formula
,lm
会根据需要将字符串转换为公式。