在R语言公式中使用tidyselect指定多列是否可行?
在R语言公式中使用tidyselect语法指定列的方法
原生R公式本身不支持直接使用tidyselect语法(比如starts_with()),但可以通过以下几种方式实现类似需求:
方法一:先提取目标列名再构建公式
先用tidyselect工具提取符合规则的列名,再用reformulate()生成公式传入拟合函数:# 提取以"a"开头的自变量列名 target_cols <- tidyselect::vars_select(names(df), starts_with("a")) # 构建公式并拟合逻辑回归 lr_fit <- parsnip::logistic_reg() %>% fit(reformulate(target_cols, response = "y"), data = df)方法二:先筛选数据再用
.指代所有自变量
这是你提到的思路,先通过dplyr::select()筛选出响应列和目标自变量列,再用y ~ .表示用所有剩余列作为自变量:lr_fit <- parsnip::logistic_reg() %>% fit(y ~ ., data = df %>% dplyr::select(y, starts_with("a")))方法三:用准引用语法直接注入tidyselect结果
借助rlang包的准引用功能,把tidyselect的结果直接嵌入公式中,写法更简洁:lr_fit <- parsnip::logistic_reg() %>% fit(y ~ !!tidyselect::starts_with("a"), data = df)
内容的提问来源于stack exchange,提问作者qwr
相关产品推荐
相关产品推荐

