首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用lapply更改具有不同列名的数据帧列表的列名

使用lapply更改具有不同列名的数据帧列表的列名
EN

Stack Overflow用户
提问于 2020-10-19 11:33:04
回答 1查看 82关注 0票数 0

我有三个具有不同列名的数据帧:

代码语言:javascript
复制
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)

它们在一个列表中:

代码语言:javascript
复制
my_list <- list(df1, df2, df3)

我需要更改列名(即A变为A1,B变为B2,D变为D2,依此类推)。不,这并不像在所有列名上附加一个2那么简单。我的真实情况将涉及到独特的变化(即。A变成“物种”,B变成“丰富性”,以此类推。)

当列表中的数据帧都具有相同的列名(Using lapply to change column names of a list of data frames)时,如何做到这一点有很好的答案。

不过,我的数据帧有不同的名称。如果能使用类似于mapvalues的功能,那就更好了。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-10-19 11:53:44

您可以使用fromto的信息创建数据帧,并使用lapply使用setNames来匹配和替换列名:

代码语言:javascript
复制
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
#....
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64420806

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档