r-所有变量之间具有n向相互作用的模型矩阵



我正在使用以下代码在数据集中的变量之间创建n阶交互。对于二阶相互作用的情况,我使用:

train_X <- model.matrix(~.^2, train_data %>% select(-target))

这是正确的,然而,当我试图使n阶术语模块化,以以下方式将此代码嵌入函数中时,它不起作用:

n <- 2
train_X <- model.matrix(~.^n, train_data %>% select(-target))

特别是,它返回以下错误:

术语错误。公式(对象,数据=数据(:公式中的无效幂

我也尝试过指定n = 2L,但它返回相同的错误。

尝试将公式构建为字符串(使用paste()glue::glue()sprintf()或任何您喜欢的(并转换为公式(使用as.formula()reformulate()(。

train_X <- model.matrix(
as.formula(sprintf("~.^%d", n)), 
train_data %>% select(-target))

最新更新