缘由

生信之路,道阻且长,记录经验,但渡有缘人。

碎碎念

及时当勉励,岁月不饶人 ——陶渊明

代码

在数据清洗中,我们经常需要修改列名,比如把英文列名改成中文、改成实验组名称等等。
但当列名很多、或者映射关系复杂时,一行一行写太麻烦了。
其实,rename() 完全可以和“字典”搭配,实现优雅批量重命名。

基本示例

df <- data.frame(a="1", b="2", c="3")
 
# 定义字典
dict <- setNames(c("a", "b", "c"), c("苹果", "香蕉", "橙子")) # 给 old 设置 new,也就是 k,v
df %>% rename(!!!dict)

另一种写法

dict2 = c("a", "b", "c")
names(dict2) <- c("葡萄", "香蕉", "橙子")
df %>% rename(!!!dict2)

直接定义键值对的方式

dict3 <- c("苹果"="a", 香蕉="b", "橙子"="c")
df %>% rename(!!!dict3)

这种写法更加直观,左边是新名字(key),右边是旧名字(value)。

再看一个完整例子:列名改中文

df <- data.frame(a=1, b=2, c=3)
 
# 给 a、b、c 设置新名字,同时可以看作一个字典
# 将 a -> 苹果, b -> 香蕉, c -> 橙子
dict <- set_names(c("a","b","c"), c("苹果","香蕉","橙子"))
 
df %>% rename(!!!dict)

结果:

苹果香蕉橙子
123
优点说明
✅ 一行搞定批量改名rename(!!!dict)
✅ 可读性强映射关系清晰可控
✅ 动态生成可配合 set_names() 或数据逻辑生成
✅ 通用性强列名、样本名、条件名都能改