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

如何在dplyr的rename_with()的.cols参数中指定tibble的第二至末列及排除列?

dplyr中优雅选择列的实用写法

针对你提到的需求,dplyr的tidyselect语法提供了更简洁的方式来选择列,不用手动调用ncol()计算列数,具体方法如下:

1. 选择第2列到最后一列

有两种常用的优雅写法:

  • 用last_col()直接定位最后一列,搭配索引范围:
betterLifeIndicators |>
  rename_with(~paste0(.x, ")"), .cols = 2:last_col())
  • 用负索引排除第一列(效果等价于选第2到最后一列):
betterLifeIndicators |>
  rename_with(~paste0(.x, ")"), .cols = -1)

2. 选择除指定列集合外的所有列

如果需要排除任意指定列(比如第一列、某几个列名),可以用以下方式:

排除单列(比如第一列)

除了上面的-1,还可以用!first_col()明确排除首列:

betterLifeIndicators |>
  rename_with(~paste0(.x, ")"), .cols = !first_col())

排除多列

  • 按列索引排除(比如排除第1和第3列):
betterLifeIndicators |>
  rename_with(~paste0(.x, ")"), .cols = -c(1, 3))
  • 按列名排除(比如排除名为col1和col3的列):
betterLifeIndicators |>
  rename_with(~paste0(.x, ")"), .cols = !c(col1, col3))
  • 结合everything()更直观地表达“所有列除了指定列”:
betterLifeIndicators |>
  rename_with(~paste0(.x, ")"), .cols = everything() & !c(col1, col3))

这些写法都利用了dplyr内置的tidyselect工具,代码更简洁易读,也避免了手动计算列数的麻烦。

内容的提问来源于stack exchange,提问作者andrés

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 14:12:21