如何在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
相关产品推荐
相关产品推荐

