【问题标题】:Rename columns in multiple data sets R [duplicate]重命名多个数据集中的列R [重复]
【发布时间】:2021-03-16 23:02:27
【问题描述】:

我有一堆数据集,我想将重命名函数应用于所有列。我已经构建了该函数,并达到了我有一个带有重命名列的数据框列表的地步,但我一直坚持如何将这些数据框重新分配回原始数据框。有人可以帮助我完成最后一步或建议更简单的方法吗?

A = data.frame(Var 1 = c(1,2,3,4), Var 2 = c(1,2,3,4))
B = data.frame(Var 3 = c(1,3,4,7), Var 4 = c(1,2,3,4))

better_names <- function(x) {
    names(x) <- names(x) %>% stringr::str_replace_all("\\s","_") %>% tolower
    return(x)
}

list_data <- list(A, B)
l <- lapply(list_data, better_names)

【问题讨论】:

  • 您想将data.frames 保留在您的list_data 对象中吗?尝试使用“data.table”中的setnames 重命名您的data.frame 列。 better_names 的主体可能是:data.table::setnames(x, names(x) %&gt;% stringr::str_replace_all("\\s","_") %&gt;% tolower)[](但请注意,如果您使用这种方法,data.frame "A" 和 data.frame "B" 可能也会有新名称。

标签: r stringr names


【解决方案1】:

我们可以将输出命名为list,然后使用list2env 来更改全局环境中存在的对象(虽然不推荐)

names(l) <- c('A', 'B')
list2env(l, .GlobalEnv)

-检查对象

A
#  var_1 var_2
#1     1     1
#2     2     2
#3     3     3
#4     4     4

B
#  var_3 var_4
#1     1     1
#2     3     2
#3     4     3
#4     7     4

数据

A <- data.frame(`Var 1` = c(1,2,3,4), `Var 2` = c(1,2,3,4), check.names = FALSE)
B <- data.frame(`Var 3` = c(1,3,4,7), `Var 4` = c(1,2,3,4), check.names = FALSE)

【讨论】:

    猜你喜欢
    • 2018-12-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多