缘由
生信之路,道阻且长,记录经验,但渡有缘人。
碎碎念
及时当勉励,岁月不饶人 ——陶渊明
代码
在数据清洗中,我们经常需要修改列名,比如把英文列名改成中文、改成实验组名称等等。
但当列名很多、或者映射关系复杂时,一行一行写太麻烦了。
其实,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)结果:
| 苹果 | 香蕉 | 橙子 |
|---|---|---|
| 1 | 2 | 3 |
| 优点 | 说明 |
|---|---|
| ✅ 一行搞定批量改名 | rename(!!!dict) |
| ✅ 可读性强 | 映射关系清晰可控 |
| ✅ 动态生成 | 可配合 set_names() 或数据逻辑生成 |
| ✅ 通用性强 | 列名、样本名、条件名都能改 |