You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 05:22:06