如何直接用向量标记数据框的名称

How to label colnames of a dataframe directly with a vector

我有一个包含 300 列的数据框。我想用向量(由 300 个条目组成)标记列。 我尝试使用带标签的包装。但是我不想将每个变量一个一个地分配给一个标签 -> id= "Identity", age = "Age".....等等。 我想将向量中的标签名称直接分配给列 -> c("Identity", "Age", ...

示例:

library(tidyverse)
library(labelled)

#dataframe
df <- data.frame(matrix(0, ncol = 300, nrow = 2))
#vector of labels for columns
label_colname <- sprintf("label_colname[%d]",seq(1:300))

df %>% set_variable_labels(label = label_colname)

error in set_variable_labels(., label = label_colname) : some variables not found in .data

我现在找到了带有 sjlabelled 包的解决方案:

library(sjlabelled)

df <- data.frame(matrix(0, ncol = 30, nrow = 2))
label_colname <- sprintf("label_colname[%d]",seq(1:30))

df <- set_label(df, label = label_colname) # set_label from sjlabelled package

由于标签只是作为属性存储,您也可以直接在基 R 中执行此操作:

for (i in seq_along(df)) {
  attr(df[[i]], "label") <- label_colname[i]
}

数据(从 TarJae 挖来的)

df <- data.frame(matrix(0, ncol = 30, nrow = 2))
label_colname <- sprintf("label_colname[%d]",seq(1:30))