fifigoblin
fifigoblin

Reputation: 455

How to apply functions over a list of list of dataframes?

I've got a list state-list which contains 4 lists wa, tex, cin and ohi, all of which contain around 60 dataframes. I want to apply the same functions to these dataframes. For example, I want to add a new column with a mean, like this:

 library(dplyr)

 df # example df from one of the lists 
 
 df %>% group_by(x) %>% mutate(mean_value = mean(value))

How can I do this?

Upvotes: 1

Views: 66

Answers (1)

akrun
akrun

Reputation: 886938

We can use a nested map to loop over the list

library(purrr)
library(dplyr)
out <- map(state_list, ~ map(.x, ~ .x %>%
                        group_by(x) %>%
                        mutate(mean_value = mean(value)))

Or using base R

out <- lapply(state_list, function(lst1) lapply(lst1, 
          function(dat) transform(dat, mean_value = ave(value, x))))

Upvotes: 3

Related Questions