R-仅重命名DataFrames列表中每个数据框中的最后一列



我想在我的每个dataframes中的每个数据范围中重命名最终列,这些列是dataframes列表中的。新名称将与所有人相同。

我制作了提取最后一列的代码(下图(,但没有重命名的最终列标题。

List <- lapply(List, function(x) x[,ncol(x)])

您可以做

lapply(lst, function(x) {names(x) <- c(names(x[-length(x)]), "new_name");x})
#[[1]]
#                   mpg cyl disp  hp drat    wt  qsec vs am gear new_name
#Mazda RX4         21.0   6  160 110 3.90 2.620 16.46  0  1    4        4
#Mazda RX4 Wag     21.0   6  160 110 3.90 2.875 17.02  0  1    4        4
#Datsun 710        22.8   4  108  93 3.85 2.320 18.61  1  1    4        1
#Hornet 4 Drive    21.4   6  258 110 3.08 3.215 19.44  1  0    3        1
#Hornet Sportabout 18.7   8  360 175 3.15 3.440 17.02  0  0    3        2
#Valiant           18.1   6  225 105 2.76 3.460 20.22  1  0    3        1
#[[2]]
#                   mpg cyl disp  hp drat    wt  qsec vs am gear new_name
#Mazda RX4         21.0   6  160 110 3.90 2.620 16.46  0  1    4        4
#Mazda RX4 Wag     21.0   6  160 110 3.90 2.875 17.02  0  1    4        4
#Datsun 710        22.8   4  108  93 3.85 2.320 18.61  1  1    4        1
#Hornet 4 Drive    21.4   6  258 110 3.08 3.215 19.44  1  0    3        1
#Hornet Sportabout 18.7   8  360 175 3.15 3.440 17.02  0  0    3        2
#Valiant           18.1   6  225 105 2.76 3.460 20.22  1  0    3        1

或@shree提到的更简单版本

lapply(lst, function(x) {names(x)[ncol(x)] <- "new_name";x})

我们也可以使用rename_at

library(dplyr)
library(purrr)
map(lst,. %>% rename_at(ncol(.), ~"new_name"))

数据

lst <- list(head(mtcars), head(mtcars))

最新更新