重命名数据框列表中的列

时间:2019-03-11 19:52:26

标签: r list lapply

我需要能够按名称重命名所有可能具有相同名称的数据框列表中的列。

例如:

[[1]]
  col1 col2
1    1    2
2    2    3

[[2]]
  col1 col2
1    1    2
2    2    3

应成为:

[[1]]
  ID col2
1    1    2
2    2    3

[[2]]
  ID col2
1    1    2
2    2    3

数据:

col1 <- c(1,2)
col2 <- c(2,3)
myList <- list(data.frame(col1,col2),data.frame(col1,col2))

我的尝试:

lapply(myList, function(x){
  names(myList[[x]])[names(myList[[x]]) =="col1"] <- "ID"
})

我哪里出错了?我需要基数R。

1 个答案:

答案 0 :(得分:0)

您可以使用{dplyr}中的{purrr}{tidyverse}

> library(purrr)
> library(dplyr)
> 
> df1 <- data.frame(col1 = 1:2, col2 = 3:4)
> df2 <- data.frame(col1 = 3:2, col2 = 6:7)
> 
> list(df1, df2) %>% map(~ rename(., ID = col1))
[[1]]
  ID col2
1  1    3
2  2    4

[[2]]
  ID col2
1  3    6
2  2    7

它也适用于字符串:list(df1, df2) %>% map(~ rename(., "ID" = "col1"))