【问题标题】:Change name of the last column in df stored in a list更改存储在列表中的 df 中最后一列的名称
【发布时间】:2021-04-26 19:58:24
【问题描述】:

我有一个包含 5 个数据帧的列表。现在我想更改每个 data.frame 的最后一列的名称。 而且我不知道 df 中有多少列。

示例数据:

library(tidyverse)
data(mtcars)

df1 <- tail(mtcars)
df2 <- mtcars[1:5, 2:10]
df3 <- mtcars
df4 <- head(mtcars)
list <- list(df1, df2, df3, df4)

一一执行,命令如下:

colnames(list$df1)[length(list$df1)] <- "rank"

在 for 循环中,我认为该命令将是:

for (i in seq_along(list)) {
  colnames(i)[length(i)] <- "rank"
}

但在这里我得到了错误:

Error in `colnames<-`(`*tmp*`, value = `*vtmp*`) : 
  attempt to set 'colnames' on an object with less than two dimensions

知道如何解决这个问题吗?也许通过地图命令? 这里我不知道如何包含 index/length(df) 以将 colnames-command 分配给数据框的最后一列。

感谢您的帮助 :) 凯瑟琳

【问题讨论】:

    标签: r for-loop rename


    【解决方案1】:

    您可以在map 中使用来自dplyr 的last_col()

    library(tidyverse)
    
    list <- map(list,~{
      
      .x %>% 
        rename(rank = last_col())
      
    })
    
    

    【讨论】:

      猜你喜欢
      • 2018-07-14
      • 2022-12-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-11
      • 2016-10-25
      • 2023-01-16
      相关资源
      最近更新 更多