R 使用Lappy更改具有不同列名的数据帧列表的列名

R 使用Lappy更改具有不同列名的数据帧列表的列名,r,dataframe,lapply,R,Dataframe,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) df1您可以使用from和to的信息以及lapply创建数据帧,使用setNames匹配和替换列名: lookup_names <- data.frame(from = c("A", &q

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

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)

df1您可以使用
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
#....

lookup\u名称那么是否将大小为6的向量存储在某个位置,以附加到现有的列名上?如何映射要追加的旧名称和新名称?它是基于列的位置还是名称?@RonakShah我希望能够根据名称映射更改,类似于
mapvalues
的工作方式:
mapvalues(df$column,from=c(“A”、“B”、“D”、“E”、“G”、“H”),to=c(“A2”、“B2”、“D2”、“E2”、“G2”、“H2”)
。但当然,我需要使用
lappy
来更改列名,这与这里的示例不同,这里的值只是在一个列中更改。它们必须按名称映射,并且也能够这样做:
mapvalues(df$column,from=c(“a”、“B”、“D”、“E”、“G”、“H”)到=c(“this”、“that”、“he”、“she”,“他”,“她”))
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
#....