所有变量之间具有 n 向交互的模型矩阵

Model matrix with n-wise interactions between all variables

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

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

虽然工作正常,但是,当我尝试将 n 阶项模块化以按以下方式将此代码嵌入函数中时,它不起作用:

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

特别是returns以下错误:

Error in terms.formula(object, data = data) : invalid power in formula

我也试过指定n = 2L,但是returns同样的错误。

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

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