Изменение атрибутов нескольких столбцов с lapply в R - PullRequest
0 голосов
/ 09 июля 2019

У меня есть набор данных с помеченными переменными (импортирован из Stata) и я хотел бы изменить атрибут метки (в нижний регистр) нескольких переменных.Я знаю, как сделать этот столбец за столбцом, но хочу вложить назначение в функцию, чтобы использовать lapply (или, наоборот, mutate_at из tidyverse).

library(tidyverse)

gender <- labelled(c(0, 0, 1, 0), labels = c(MALE = 0, FEMALE = 1))
group <- labelled(c(1, 2, 3, 1), labels = c(TREATMENT_FIRST = 1, TREATMENT_SECOND = 2, CONTROL = 3))
result <- rnorm(4)
df <- tibble(gender, group, result)

names(attr(df$gender, "labels"))

Я хотел бы изменить атрибут метки пола и группыв строчные буквы.

names(attr(df$gender, "labels")) <- tolower(names(attr(df$gender, "labels")))

Это работает, но в моем реальном наборе данных у меня много переменных, поэтому я хотел бы сделать это внутри функции.Я думал, что смогу определить функцию, как показано ниже, а затем использовать lapply, но это возвращает метки вместо назначения меток атрибуту.

f1 <- function(x) {
  names(attr(x, "labels")) <- tolower(names(attr(x$y, "labels")))
}
cols <- c("gender", "group")
df[cols] <- lapply(df[cols], f1)
df
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...