【问题标题】:rename columns in a list of dataframes重命名数据框列表中的列
【发布时间】:2019-03-11 19:52:25
【问题描述】:

我需要能够按名称重命名数据框列表中的列,这些数据框都可以预期具有相同的名称。

例如:

[[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。

【问题讨论】:

  • 谢谢,但我需要按名称而不是索引来引用 names(x)[1]。
  • 抱歉,没有读到:lapply(myList, function(x) {names(x)[which(names(x) == "col1")] &lt;- "ID"; x}) 注意; x - 您的函数返回x很重要
  • 是的,就是这样。谢谢

标签: r list lapply


【解决方案1】:

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

> 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) %&gt;% map(~ rename(., "ID" = "col1"))

【讨论】:

猜你喜欢
  • 2017-12-28
  • 2018-12-26
  • 2020-08-30
  • 2014-10-26
  • 2018-01-04
  • 2014-09-20
  • 2021-02-03
  • 2021-12-19
  • 2018-12-21
相关资源
最近更新 更多