r - 使用 lapply 更改具有不同列名的数据框列表的列名
问题描述
我有三个具有不同列名的数据框:
df1 <- data.frame(A = 1:10, B = 10:19)
df2 <- data.frame(D = 20:29, E = 30:39)
df3 <- data.frame(G = 40:49, H = 50:59)
它们在一个列表中:
my_list <- list(df1, df2, df3)
我需要更改列名(即 A 变为 A1,B 变为 B2,D 变为 D2,等等......)。不,这不像在所有列名上附加 2 那样容易。我的真实情况将涉及独特的变化(即A变成“物种”,B变成“丰富”等)
当列表中的数据框都具有相同的列名(使用 lapply 更改数据框列表的列名)时,如何执行此操作有很好的答案。
我的数据框有不同的名称。使用类似于mapvalues
.
解决方案
您可以使用和 的信息创建一个数据框,from
并to
使用它来匹配和替换列名:lapply
setNames
lookup_names <- data.frame(from = c("A", "B", "D", "E", "G", "H"),
to = c("this", "that", "he", "she", "him", "her"))
lookup_names
# from to
#1 A this
#2 B that
#3 D he
#4 E she
#5 G him
#6 H her
lapply(my_list, function(x)
setNames(x, lookup_names$to[match(names(x), lookup_names$from)]))
#[[1]]
# this that
#1 1 10
#2 2 11
#3 3 12
#4 4 13
#...
#...
#[[2]]
# he she
#1 20 30
#2 21 31
#3 22 32
#4 23 33
#5 24 34
#....
推荐阅读
- reactjs - 如何使用 React 存储 API 身份验证令牌?
- angularjs - 如何解决这个403 Forbidden?
- ios - 如何使用prepare_command修改宿主项目的info.plist文件
- visual-studio-code - appsscript.json 中需要逗号的地方
- python - 部署 PythonAnywhere
- python - 导出到 HTML 时将输入单元格移动到 Jupyter 中的附录
- python - 如何修复语音识别中特征提取/预处理中的损坏数据?
- ansible - Ansible 有条件地循环通过 with_items?
- java - 如何调整可绘制图层列表中的位图大小?程序化或 XML
- php - 依赖于另一个字段的 select2 字段