如何在 lm() 中添加所有变量的二阶?

How to add all variables its second degree in lm()?

我有一个包含 16 个变量的数据框。当我进行多元线性回归时,我会执行以下操作:

fit <- lm(y ~ .,data=data)

现在,我知道如何添加其中一个变量的二次项:

fit2 <- lm(y ~ poly(x1,2) + .,data=data)

但现在我不想为我的所有 16 个变量写出这个。我怎样才能以一种简单的方式对我的所有变量执行此操作?

假设数据中的第一个变量是我们的 'y',我们得到:

as.formula(
    paste('y ~',paste('poly(',colnames(data[-1]),',2)',collapse = ' + ')
)