Применить функцию к нескольким наборам данных, используя lapply - PullRequest
0 голосов
/ 18 апреля 2019

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

Я попробовал код ниже: первые 3 строки описывают создание переменной, которую я пытаюсь применить с помощью функции, созданной ниже.

data1 <- data1 %>%
  dplyr::group_by(id)%>%
  dplyr::mutate(new_var = sum(score))


list_data <- c(data1, data2, data3)
my_func <- function(x) {
  x <- x %>%
  dplyr::group_by(id) %>%
  dplyr::mutate(new_var = sum(score))
}

lapply(list_data, my_func)

Я получаю сообщение об ошибке

нет применимого метода для group_by, примененного к объекту класса "Характер".

Не могли бы вы помочь мне понять это?

1 Ответ

0 голосов
/ 18 апреля 2019

для меня это прекрасно работает:

my_func <- function(x) {
  x <- x %>%
    dplyr::group_by(id) %>%
    dplyr::mutate(new_var = sum(score))
}
data1 <- data.frame(id = rep(1:3, each = 3), score = 1:9)
data2 <- data.frame(id = rep(1:3, each = 3), score = 11:19)
data3 <- data.frame(id = rep(1:3, each = 3), score = 21:29)


list_data <- list(data1, data2, data3)
lapply(list_data, my_func)
...