更改数据框中的多个变量的属性

时间:2018-07-10 09:32:46

标签: r purrr

我想更改数据框中的变量标签。我不想使用像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()进行操作,则所有属性都是又输了。欢迎对该功能进行任何改进!

1 个答案:

答案 0 :(得分:1)

最后只做DF[] <- replace_labels(DF, new_labels),这样DF仍然是数据帧。