我正在使用以下代码在数据集中的变量之间创建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))