更改数据框中多个变量的属性
Changing attributes of multiple variables in data frame
我想更改数据框中变量的标签。我不想使用像 Hmisc 这样的包,而是想简单地使用 tidyverse 中提供的工具。我想我快成功了,但我被困住了。这是一个工作示例:
library(tidyverse)
DF = data.frame(a=1:2,b=3:4)
attr(DF$a, "label") <- "Old label a"
attr(DF$b, "label") <- "Old label b"
new_labels <- c("First label", "Second label")
replace_labels <- function(df,new_labels){
column_names <- colnames(df)
purrr::map2(column_names, new_labels, ~ (df[[.x]] <-`attr<-`(df[[.x]], "label", .y)))
}
现在将函数应用于数据框时
replace_labels(DF, new_labels)
我得到一个列表而不是数据框,这不是所需的输出并且通过转换将列表转换回数据框似乎不是正确的方法,如果我用 bind_cols()
全部属性再次丢失。欢迎对功能进行任何改进!
在最后做 DF[] <- replace_labels(DF, new_labels)
所以 DF 仍然是一个数据帧。
我想更改数据框中变量的标签。我不想使用像 Hmisc 这样的包,而是想简单地使用 tidyverse 中提供的工具。我想我快成功了,但我被困住了。这是一个工作示例:
library(tidyverse)
DF = data.frame(a=1:2,b=3:4)
attr(DF$a, "label") <- "Old label a"
attr(DF$b, "label") <- "Old label b"
new_labels <- c("First label", "Second label")
replace_labels <- function(df,new_labels){
column_names <- colnames(df)
purrr::map2(column_names, new_labels, ~ (df[[.x]] <-`attr<-`(df[[.x]], "label", .y)))
}
现在将函数应用于数据框时
replace_labels(DF, new_labels)
我得到一个列表而不是数据框,这不是所需的输出并且通过转换将列表转换回数据框似乎不是正确的方法,如果我用 bind_cols()
全部属性再次丢失。欢迎对功能进行任何改进!
在最后做 DF[] <- replace_labels(DF, new_labels)
所以 DF 仍然是一个数据帧。