简体   繁体   中英

Apply a function to multiple datasets using lapply

I have a large number of datasets for which I want to create the same variable. I would like to create a function to avoid having to repeat the same code many times.

I tried the code below: the first 3 lines describe the creation of the variable that I am trying to apply through the function created below.

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)

I obtain the error message

no applicable method for 'group_by' applied to an object of class "character".

Could you please help me figure this out?

for me this works fine:

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)

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM