【问题标题】:Rename ONLY the last column in each dataframe in a list of dataframes [duplicate]仅重命名数据框列表中每个数据框的最后一列[重复]
【发布时间】:2019-10-02 00:52:41
【问题描述】:

我想重命名数据框列表中的每个数据框的最后一列。新名称对所有人都是一样的。

我编写了提取最后一列(如下)的代码,但没有重命名最后一列标题。

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

【问题讨论】:

    标签: r list dataframe rename


    【解决方案1】:

    你可以的

    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))
    

    【讨论】:

      猜你喜欢
      • 2021-12-19
      • 1970-01-01
      • 2019-10-22
      • 1970-01-01
      • 2017-12-28
      • 1970-01-01
      • 1970-01-01
      • 2018-04-29
      • 2021-11-15
      相关资源
      最近更新 更多