R语言如何按带_ln替换规则的向量筛选数据框变量
你收到报错是因为across() 是dplyr中用于对多列值执行统一转换的函数,必须嵌套在mutate()、summarise()这类操作列数据的动词内部,你当前的需求是处理列名筛选对应列,不需要用到across()。
方案1:tidyverse风格(适配你现有代码习惯)
先批量处理筛选向量,移除所有末尾的_ln后缀,再直接选择对应列即可,支持上百个变量的自动化批量处理:
library(dplyr) library(stringr) # 批量处理列名,正则里的$表示仅匹配结尾的_ln,避免误伤变量名中间的_ln字符 target_cols <- str_remove(filter_vector, "_ln$") # 用all_of包裹可以在列名不存在时输出更友好的报错提示 res <- df %>% select(all_of(target_cols))
方案2:Base R版本,无需额外加载包
# 用gsub批量处理列名 target_cols <- gsub("_ln$", "", filter_vector) res <- df[, target_cols]
两种方案输出的结果都和你给出的预期结果完全一致。
内容的提问来源于stack exchange,提问作者Alexis
相关产品推荐
相关产品推荐

