R语言如何使用rename_with()替换指定后缀重命名数据框列
R数据框列名精准后缀替换方案
rename_with()完全可以实现该需求,之前操作失效的核心原因是没有做精准的后缀匹配:做字符串替换时需要用正则的结尾锚定符$,确保只替换列名最末尾的_10p,避免误匹配其他位置的相同字符。
基于dplyr::rename_with()的实现
library(dplyr) # 示例测试数据 eat10.18 <- data.frame(id = c(1000, 1001, 1002), eat_10 = c(2, 4, 1), eat_10p = c(1, 2, 3), run_10p = c(1, 1, 2)) # 执行重命名 eat10.18_renamed <- eat10.18 |> rename_with( # 替换规则:仅替换字符串末尾的_10p为_p_10 .fn = ~ sub("_10p$", "_p_10", .x), # 双重筛选:仅操作以_10p结尾的列,避免误改 .cols = ends_with("_10p") )
执行后查看列名验证结果:
colnames(eat10.18_renamed) # [1] "id" "eat_10" "eat_p_10" "run_p_10"
id、eat_10列名保持原样,eat_10p、run_10p正确替换为目标名称,符合要求。
基础R实现(无第三方包依赖)
如果不想加载dplyr,直接操作列名属性即可实现相同效果:
eat10.18_renamed <- eat10.18 colnames(eat10.18_renamed) <- sub("_10p$", "_p_10", colnames(eat10.18_renamed))
内容的提问来源于stack exchange,提问作者Blair Burnette
相关产品推荐
相关产品推荐

