Home > Software engineering >  Operating on multiple dataframes
Operating on multiple dataframes

Time:11-03

The file that was given contains 8 dataframes named data1, data2,...,data8. I need to perform t.test()on each and organize the results in a table.

t1 <- t.test(A ~ B, data1)

t2 <- t.test(A ~ B, data2)

.

.

.

t8 <- t.test(A ~ B, data8)

summary_table <- map_df(list(t1, t2, t3, t4, t5, t6, t7, t8), tidy)

Is there any way of shortening this code perhaps using list or lapply? Dataframe names are repetitive and has a pattern so I don't want to repeat writing it also.

CodePudding user response:

Use mget to load the data in a list, loop over the list with map/lapply, apply the t.test and return the tidy output as a single data.frame with a column to identify the origin data with .id in map

library(purrr)
library(broom)
mget(paste0("data", 1:8)) %>%
    map_dfr(~ t.test(A ~ B, data = .x) %>%
              tidy, .id = 'dataname')
  • Related