我想更改数据框中的变量标签。我不想使用像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()
进行操作,则所有属性都是又输了。欢迎对该功能进行任何改进!
答案 0 :(得分:1)
最后只做DF[] <- replace_labels(DF, new_labels)
,这样DF仍然是数据帧。