Я борюсь с переменными метками столбцов data.frame. Скажем, у меня есть следующий фрейм данных (часть гораздо большего фрейма данных):
data <- data.frame(age = c(21, 30, 25, 41, 29, 33), sex = factor(c(1, 2, 1, 2, 1, 2), labels = c("Female", "Male")))
#
У меня также есть именованный вектор с метками переменных для этого фрейма данных:
var.labels <- c(age = "Age in Years", sex = "Sex of the participant")
Я хочу назначить метки переменных в var.labels
столбцам в фрейме данных data
, используя функцию label
из пакета Hmisc
. Я могу делать их по очереди вот так, а потом проверять результат:
> label(data[["age"]]) <- "Age in years"
> label(data[["sex"]]) <- "Sex of the participant"
> label(data)
age sex
"Age in years" "Sex of the participant"
Метки переменных назначаются как атрибуты столбцов:
> attr(data[["age"]], "label")
[1] "Age in years"
> attr(data[["sex"]], "label")
[1] "Sex of the participant"
Чудесно. Однако с большим фреймом данных, скажем, 100 или более столбцов, это не будет удобно или эффективно. Другой вариант - назначить их напрямую как атрибуты:
> attr(data, "variable.labels") <- var.labels
Не помогает. Ярлыки переменных столбцам не присваиваются:
> label(data)
age sex
"" ""
Вместо этого они назначаются как атрибут самого фрейма данных (см. Последний компонент списка):
> attributes(data)
$names
[1] "age" "sex"
$row.names
[1] 1 2 3 4 5 6
$class
[1] "data.frame"
$variable.labels
age sex
"Age in Years" "Sex of the participant"
И я не этого хочу. Мне нужны метки переменных как атрибуты столбцов. Я попытался написать следующую функцию (и многие другие):
set.var.labels <- function(dataframe, label.vector){
column.names <- names(dataframe)
dataframe <- mapply(label, column.names, label.vector)
return(dataframe)
}
А затем выполните:
> set.var.labels(data, var.labels)
Не помогло. Он возвращает значения вектора var.labels
, но не назначает метки переменных. Если я попытаюсь назначить его новому объекту, он просто содержит значения меток переменных в виде вектора.