[英]Using lapply to change column names of list of dataframes with different column names
我有三個具有不同列名的數據框:
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
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
#....
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.