Madison Bell
2021-Jun-04 14:03 UTC
[R] Can I use group_map to iteratively process a dataframe?
I want to iteratively process a master list of comparisons using group_walk() as an alternative method to import batches of .csv files. I have the code for iteratively importing batch csvs here: #Import list of csv files from directory, formatted as: |rownm | neg | pos | |------|-----|-----| |neg |19 |18 | |pos |5 |141 | ``` library(tidyverse) # for cleaning and shaping data library(epiR) library(irrCAC) all_epi_files <- list.files("congtables", pattern = "*.csv", full.names = TRUE) #Make export directory check_create_dir <- function(the_dir) { if (!dir.exists(the_dir)) { dir.create(the_dir, recursive = TRUE) } #Creates a directory if it doesn't already exist } the_dir_ex <- "data_generated/epidata" #Name the new desired directory check_create_dir(the_dir_ex) #Make the directory if it doesn't already exist #Make function for the series of analyses epi_analysis <- function(a_csv, the_dir){ #Import data as inserted variables dat2 <- read_csv(a_csv)%>% remove_rownames %>% column_to_rownames(var="rownm") %>% as.matrix() #Run tests rval <- epi.tests(dat2, conf.level = 0.95) rkappa<-epi.kappa(dat2) gwet <- gwet.ac1.table(dat2) kappa2 <- kappa2.table(dat2) #Export results hd <- c('sensitivity', 'specificity', 'pfp', 'pfn', 'kappa', 'gwet', 'pabak') ests <- c(round(rval$elements$sensitivity$est, digits = 3), round(rval$elements$specificity$est, digits = 3), round(rval$element$pfp$est, digits = 3), round(rval$element$pfn$est, digits = 3), round(kappa2$coeff.val, digits = 3), round(gwet$coeff.val, digits = 3), round(rkappa$pabak$est, digits = 3)) cis <- c(paste(round(rval$elements$sensitivity$lower, digits = 3), round(rval$elements$sensitivity$upper, digits = 3), sep = ","), paste(round(rval$elements$specificity$lower, digits = 3), round(rval$elements$specificity$upper, digits = 3), sep = ","), paste(round(rval$element$pfp$lower, digits = 3), round(rval$element$pfp$upper, digits = 3), sep = ","), paste(round(rval$element$pfn$lower, digits = 3), round(rval$element$pfn$upper, digits = 3), sep = ","), kappa2$coeff.ci, gwet$coeff.ci, paste(round(rkappa$pabak$lower, digits = 3), round(rkappa$pabak$lower, digits = 3), sep = ",")) df <- data.frame(hd, ests, cis) write.csv(df, file = paste0(the_dir, "/", basename(a_csv)), na = "999.99", row.names = FALSE) } #Execute functions lapply(all_epi_files, FUN = epi_analysis, the_dir = the_dir_ex) ``` But instead I would like to input a dataset that looks like this: |Test Assay | Var1 | Var2 |Freq| |-----------|------|------|----| |Assay1 |neg |neg |19 | |Assay1 |neg |pos |5 | |Assay1 |pos |neg |8 | |Assay1 |pos |pos |141 | |Assay2 |neg |neg |25 | |Assay2 |neg |pos |6 | |Assay2 |pos |neg |17 | |Assay2 |pos |pos |33 | |Assay3 |neg |neg |99 | |Assay3 |neg |pos |20 | |Assay3 |pos |neg |5 | |Assay3 |pos |pos |105 | I want to use the same function epi_analysis and export a csv for each Test Assay (in this example Assay1, Assay2, and Assay3). So far I have: ``` #Make export directory check_create_dir <- function(the_dir) { if (!dir.exists(the_dir)) { dir.create(the_dir, recursive = TRUE) } #Creates a directory if it doesn't already exist } the_dir_ex <- "data_generated/epidata" #Name the new desired directory check_create_dir(the_dir_ex) #Make the directory if it doesn't already exist #Make function for the series of analyses epi_analysis <- function(.x, the_dir){ #Clean data dat2 <- .x %>% select(c(Var1, Var2, Freq)) %>% pivot_wider(Var1, names_from = Var2, values_from = Freq) %>% remove_rownames %>% column_to_rownames( var = "Var1") %>% as.matrix() #Run tests rval <- epi.tests(dat2, conf.level = 0.95) rkappa<-epi.kappa(dat2) gwet <- gwet.ac1.table(dat2) kappa2 <- kappa2.table(dat2) #Export results hd <- c('sensitivity', 'specificity', 'pfp', 'pfn', 'kappa', 'gwet', 'pabak') ests <- c(round(rval$elements$sensitivity$est, digits = 3), round(rval$elements$specificity$est, digits = 3), round(rval$element$pfp$est, digits = 3), round(rval$element$pfn$est, digits = 3), round(kappa2$coeff.val, digits = 3), round(gwet$coeff.val, digits = 3), round(rkappa$pabak$est, digits = 3)) cis <- c(paste(round(rval$elements$sensitivity$lower, digits = 3), round(rval$elements$sensitivity$upper, digits = 3), sep = ","), paste(round(rval$elements$specificity$lower, digits = 3), round(rval$elements$specificity$upper, digits = 3), sep = ","), paste(round(rval$element$pfp$lower, digits = 3), round(rval$element$pfp$upper, digits = 3), sep = ","), paste(round(rval$element$pfn$lower, digits = 3), round(rval$element$pfn$upper, digits = 3), sep = ","), kappa2$coeff.ci, gwet$coeff.ci, paste(round(rkappa$pabak$lower, digits = 3), round(rkappa$pabak$lower, digits = 3), sep = ",")) df <- data.frame(hd, ests, cis) write.csv(df, file = paste0(the_dir, "/", basename(.x$TestAssay)), na = "999.99", row.names = FALSE) } data <- read_csv("data_raw/EpiTest.csv") %>% group_by(TestAssay)%>% group_map(~ epi_analysis) ``` But the only output I see is: ``` [[1]] function(.x, the_dir){ #Clean data dat2 <- .x %>% select(c(Var1, Var2, Freq)) %>% pivot_wider(Var1, names_from = Var2, values_from = Freq) %>% remove_rownames %>% column_to_rownames( var = "Var1") %>% as.matrix() #Run tests rval <- epi.tests(dat2, conf.level = 0.95) rkappa<-epi.kappa(dat2) gwet <- gwet.ac1.table(dat2) kappa2 <- kappa2.table(dat2) #Export results hd <- c('sensitivity', 'specificity', 'pfp', 'pfn', 'kappa', 'gwet', 'pabak') ests <- c(round(rval$elements$sensitivity$est, digits = 3), round(rval$elements$specificity$est, digits = 3), round(rval$element$pfp$est, digits = 3), round(rval$element$pfn$est, digits = 3), round(kappa2$coeff.val, digits = 3), round(gwet$coeff.val, digits = 3), round(rkappa$pabak$est, digits = 3)) cis <- c(paste(round(rval$elements$sensitivity$lower, digits = 3), round(rval$elements$sensitivity$upper, digits = 3), sep = ","), paste(round(rval$elements$specificity$lower, digits = 3), round(rval$elements$specificity$upper, digits = 3), sep = ","), paste(round(rval$element$pfp$lower, digits = 3), round(rval$element$pfp$upper, digits = 3), sep = ","), paste(round(rval$element$pfn$lower, digits = 3), round(rval$element$pfn$upper, digits = 3), sep = ","), kappa2$coeff.ci, gwet$coeff.ci, paste(round(rkappa$pabak$lower, digits = 3), round(rkappa$pabak$lower, digits = 3), sep = ",")) df <- data.frame(hd, ests, cis) write.csv(df, file = paste0(the_dir, "/", basename(.x$TestAssay)), na = "999.99", row.names = FALSE) } [[2]] function(.x, the_dir){ #Clean data dat2 <- .x %>% select(c(Var1, Var2, Freq)) %>% pivot_wider(Var1, names_from = Var2, values_from = Freq) %>% remove_rownames %>% column_to_rownames( var = "Var1") %>% as.matrix() #Run tests rval <- epi.tests(dat2, conf.level = 0.95) rkappa<-epi.kappa(dat2) gwet <- gwet.ac1.table(dat2) kappa2 <- kappa2.table(dat2) #Export results hd <- c('sensitivity', 'specificity', 'pfp', 'pfn', 'kappa', 'gwet', 'pabak') ests <- c(round(rval$elements$sensitivity$est, digits = 3), round(rval$elements$specificity$est, digits = 3), round(rval$element$pfp$est, digits = 3), round(rval$element$pfn$est, digits = 3), round(kappa2$coeff.val, digits = 3), round(gwet$coeff.val, digits = 3), round(rkappa$pabak$est, digits = 3)) cis <- c(paste(round(rval$elements$sensitivity$lower, digits = 3), round(rval$elements$sensitivity$upper, digits = 3), sep = ","), paste(round(rval$elements$specificity$lower, digits = 3), round(rval$elements$specificity$upper, digits = 3), sep = ","), paste(round(rval$element$pfp$lower, digits = 3), round(rval$element$pfp$upper, digits = 3), sep = ","), paste(round(rval$element$pfn$lower, digits = 3), round(rval$element$pfn$upper, digits = 3), sep = ","), kappa2$coeff.ci, gwet$coeff.ci, paste(round(rkappa$pabak$lower, digits = 3), round(rkappa$pabak$lower, digits = 3), sep = ",")) df <- data.frame(hd, ests, cis) write.csv(df, file = paste0(the_dir, "/", basename(.x$TestAssay)), na = "999.99", row.names = FALSE) } [[3]] function(.x, the_dir){ #Clean data dat2 <- .x %>% select(c(Var1, Var2, Freq)) %>% pivot_wider(Var1, names_from = Var2, values_from = Freq) %>% remove_rownames %>% column_to_rownames( var = "Var1") %>% as.matrix() #Run tests rval <- epi.tests(dat2, conf.level = 0.95) rkappa<-epi.kappa(dat2) gwet <- gwet.ac1.table(dat2) kappa2 <- kappa2.table(dat2) #Export results hd <- c('sensitivity', 'specificity', 'pfp', 'pfn', 'kappa', 'gwet', 'pabak') ests <- c(round(rval$elements$sensitivity$est, digits = 3), round(rval$elements$specificity$est, digits = 3), round(rval$element$pfp$est, digits = 3), round(rval$element$pfn$est, digits = 3), round(kappa2$coeff.val, digits = 3), round(gwet$coeff.val, digits = 3), round(rkappa$pabak$est, digits = 3)) cis <- c(paste(round(rval$elements$sensitivity$lower, digits = 3), round(rval$elements$sensitivity$upper, digits = 3), sep = ","), paste(round(rval$elements$specificity$lower, digits = 3), round(rval$elements$specificity$upper, digits = 3), sep = ","), paste(round(rval$element$pfp$lower, digits = 3), round(rval$element$pfp$upper, digits = 3), sep = ","), paste(round(rval$element$pfn$lower, digits = 3), round(rval$element$pfn$upper, digits = 3), sep = ","), kappa2$coeff.ci, gwet$coeff.ci, paste(round(rkappa$pabak$lower, digits = 3), round(rkappa$pabak$lower, digits = 3), sep = ",")) df <- data.frame(hd, ests, cis) write.csv(df, file = paste0(the_dir, "/", basename(.x$TestAssay)), na = "999.99", row.names = FALSE) } [[4]] function(.x, the_dir){ #Clean data dat2 <- .x %>% select(c(Var1, Var2, Freq)) %>% pivot_wider(Var1, names_from = Var2, values_from = Freq) %>% remove_rownames %>% column_to_rownames( var = "Var1") %>% as.matrix() #Run tests rval <- epi.tests(dat2, conf.level = 0.95) rkappa<-epi.kappa(dat2) gwet <- gwet.ac1.table(dat2) kappa2 <- kappa2.table(dat2) #Export results hd <- c('sensitivity', 'specificity', 'pfp', 'pfn', 'kappa', 'gwet', 'pabak') ests <- c(round(rval$elements$sensitivity$est, digits = 3), round(rval$elements$specificity$est, digits = 3), round(rval$element$pfp$est, digits = 3), round(rval$element$pfn$est, digits = 3), round(kappa2$coeff.val, digits = 3), round(gwet$coeff.val, digits = 3), round(rkappa$pabak$est, digits = 3)) cis <- c(paste(round(rval$elements$sensitivity$lower, digits = 3), round(rval$elements$sensitivity$upper, digits = 3), sep = ","), paste(round(rval$elements$specificity$lower, digits = 3), round(rval$elements$specificity$upper, digits = 3), sep = ","), paste(round(rval$element$pfp$lower, digits = 3), round(rval$element$pfp$upper, digits = 3), sep = ","), paste(round(rval$element$pfn$lower, digits = 3), round(rval$element$pfn$upper, digits = 3), sep = ","), kappa2$coeff.ci, gwet$coeff.ci, paste(round(rkappa$pabak$lower, digits = 3), round(rkappa$pabak$lower, digits = 3), sep = ",")) df <- data.frame(hd, ests, cis) write.csv(df, file = paste0(the_dir, "/", basename(.x$TestAssay)), na = "999.99", row.names = FALSE) } ``` and there are no csvs in my epidata folder. Any suggestions/corrections welcomed. I haven't used group_map() before, but I am keen to use it.
Greg Minshall
2021-Jun-05 06:37 UTC
[R] Can I use group_map to iteratively process a dataframe?
Madison, by the way, it's sort of hard to follow your example. there's some concept of MWE ==? Minimum Working Example. duckduckgo, or others on the list, can probably point the way. and, by the way :), i'm no expert. in particular, not on magrittr pipes, or on group_*, though i use both in some of my code.> data <- read_csv("data_raw/EpiTest.csv") %>% > group_by(TestAssay)%>% > group_map(~ epi_analysis)sans-pipe, i would have had : group_map(df, epi_analysis, the_dir) or some such. in magrittr pipes, maybe that would be : ... %>% group_map, epi_analysis, the_dir) or some such? hth. cheers, Greg
Rui Barradas
2021-Jun-05 13:07 UTC
[R] Can I use group_map to iteratively process a dataframe?
Hello, This is cross-posted from StackOverflow [1]. Cross posting is not well seen on R-help and the SO post is better explained (at least the data seem to be more complete). You should have waited for an answer there. Hope this helps, Rui Barradas ?s 15:03 de 04/06/21, Madison Bell escreveu:> I want to iteratively process a master list of comparisons using > group_walk() as an alternative method to import batches of .csv files. > I have the code for iteratively importing batch csvs here: > > #Import list of csv files from directory, formatted as: > > |rownm | neg | pos | > |------|-----|-----| > |neg |19 |18 | > |pos |5 |141 | > > ``` > library(tidyverse) # for cleaning and shaping data > library(epiR) > library(irrCAC) > > all_epi_files <- list.files("congtables", pattern = "*.csv", > full.names = TRUE) > > #Make export directory > check_create_dir <- function(the_dir) { > if (!dir.exists(the_dir)) { > dir.create(the_dir, recursive = TRUE) } #Creates a directory if it > doesn't already exist > } > > the_dir_ex <- "data_generated/epidata" #Name the new desired directory > > check_create_dir(the_dir_ex) #Make the directory if it doesn't already exist > > #Make function for the series of analyses > epi_analysis <- function(a_csv, the_dir){ > #Import data as inserted variables > dat2 <- read_csv(a_csv)%>% > remove_rownames %>% > column_to_rownames(var="rownm") %>% > as.matrix() > > #Run tests > rval <- epi.tests(dat2, conf.level = 0.95) > rkappa<-epi.kappa(dat2) > gwet <- gwet.ac1.table(dat2) > kappa2 <- kappa2.table(dat2) > > #Export results > hd <- c('sensitivity', 'specificity', 'pfp', 'pfn', 'kappa', 'gwet', 'pabak') > ests <- c(round(rval$elements$sensitivity$est, digits = 3), > round(rval$elements$specificity$est, digits = 3), > round(rval$element$pfp$est, digits = 3), > round(rval$element$pfn$est, digits = 3), > round(kappa2$coeff.val, digits = 3), > round(gwet$coeff.val, digits = 3), > round(rkappa$pabak$est, digits = 3)) > cis <- c(paste(round(rval$elements$sensitivity$lower, digits = 3), > round(rval$elements$sensitivity$upper, digits = 3), sep = ","), > paste(round(rval$elements$specificity$lower, digits = 3), > round(rval$elements$specificity$upper, digits = 3), sep = ","), > paste(round(rval$element$pfp$lower, digits = 3), > round(rval$element$pfp$upper, digits = 3), sep = ","), > paste(round(rval$element$pfn$lower, digits = 3), > round(rval$element$pfn$upper, digits = 3), sep = ","), > kappa2$coeff.ci, > gwet$coeff.ci, > paste(round(rkappa$pabak$lower, digits = 3), > round(rkappa$pabak$lower, digits = 3), sep = ",")) > > df <- data.frame(hd, ests, cis) > > write.csv(df, > file = paste0(the_dir, "/", basename(a_csv)), > na = "999.99", > row.names = FALSE) > > } > > > #Execute functions > lapply(all_epi_files, > FUN = epi_analysis, > the_dir = the_dir_ex) > ``` > > But instead I would like to input a dataset that looks like this: > > |Test Assay | Var1 | Var2 |Freq| > |-----------|------|------|----| > |Assay1 |neg |neg |19 | > |Assay1 |neg |pos |5 | > |Assay1 |pos |neg |8 | > |Assay1 |pos |pos |141 | > |Assay2 |neg |neg |25 | > |Assay2 |neg |pos |6 | > |Assay2 |pos |neg |17 | > |Assay2 |pos |pos |33 | > |Assay3 |neg |neg |99 | > |Assay3 |neg |pos |20 | > |Assay3 |pos |neg |5 | > |Assay3 |pos |pos |105 | > > I want to use the same function epi_analysis and export a csv for each > Test Assay (in this example Assay1, Assay2, and Assay3). So far I > have: > > ``` > #Make export directory > check_create_dir <- function(the_dir) { > if (!dir.exists(the_dir)) { > dir.create(the_dir, recursive = TRUE) } #Creates a directory if it > doesn't already exist > } > > the_dir_ex <- "data_generated/epidata" #Name the new desired directory > > check_create_dir(the_dir_ex) #Make the directory if it doesn't already exist > > #Make function for the series of analyses > epi_analysis <- function(.x, the_dir){ > #Clean data > dat2 <- .x %>% > select(c(Var1, Var2, Freq)) %>% > pivot_wider(Var1, names_from = Var2, values_from = Freq) %>% > remove_rownames %>% > column_to_rownames( var = "Var1") %>% > as.matrix() > > #Run tests > rval <- epi.tests(dat2, conf.level = 0.95) > rkappa<-epi.kappa(dat2) > gwet <- gwet.ac1.table(dat2) > kappa2 <- kappa2.table(dat2) > > #Export results > hd <- c('sensitivity', 'specificity', 'pfp', 'pfn', 'kappa', 'gwet', 'pabak') > ests <- c(round(rval$elements$sensitivity$est, digits = 3), > round(rval$elements$specificity$est, digits = 3), > round(rval$element$pfp$est, digits = 3), > round(rval$element$pfn$est, digits = 3), > round(kappa2$coeff.val, digits = 3), > round(gwet$coeff.val, digits = 3), > round(rkappa$pabak$est, digits = 3)) > cis <- c(paste(round(rval$elements$sensitivity$lower, digits = 3), > round(rval$elements$sensitivity$upper, digits = 3), sep = ","), > paste(round(rval$elements$specificity$lower, digits = 3), > round(rval$elements$specificity$upper, digits = 3), sep = ","), > paste(round(rval$element$pfp$lower, digits = 3), > round(rval$element$pfp$upper, digits = 3), sep = ","), > paste(round(rval$element$pfn$lower, digits = 3), > round(rval$element$pfn$upper, digits = 3), sep = ","), > kappa2$coeff.ci, > gwet$coeff.ci, > paste(round(rkappa$pabak$lower, digits = 3), > round(rkappa$pabak$lower, digits = 3), sep = ",")) > > df <- data.frame(hd, ests, cis) > > write.csv(df, > file = paste0(the_dir, "/", basename(.x$TestAssay)), > na = "999.99", > row.names = FALSE) > > } > > data <- read_csv("data_raw/EpiTest.csv") %>% > group_by(TestAssay)%>% > group_map(~ epi_analysis) > ``` > > But the only output I see is: > ``` > [[1]] > function(.x, the_dir){ > #Clean data > dat2 <- .x %>% > select(c(Var1, Var2, Freq)) %>% > pivot_wider(Var1, names_from = Var2, values_from = Freq) %>% > remove_rownames %>% > column_to_rownames( var = "Var1") %>% > as.matrix() > > #Run tests > rval <- epi.tests(dat2, conf.level = 0.95) > rkappa<-epi.kappa(dat2) > gwet <- gwet.ac1.table(dat2) > kappa2 <- kappa2.table(dat2) > > #Export results > hd <- c('sensitivity', 'specificity', 'pfp', 'pfn', 'kappa', 'gwet', 'pabak') > ests <- c(round(rval$elements$sensitivity$est, digits = 3), > round(rval$elements$specificity$est, digits = 3), > round(rval$element$pfp$est, digits = 3), > round(rval$element$pfn$est, digits = 3), > round(kappa2$coeff.val, digits = 3), > round(gwet$coeff.val, digits = 3), > round(rkappa$pabak$est, digits = 3)) > cis <- c(paste(round(rval$elements$sensitivity$lower, digits = 3), > round(rval$elements$sensitivity$upper, digits = 3), sep = ","), > paste(round(rval$elements$specificity$lower, digits = 3), > round(rval$elements$specificity$upper, digits = 3), sep = ","), > paste(round(rval$element$pfp$lower, digits = 3), > round(rval$element$pfp$upper, digits = 3), sep = ","), > paste(round(rval$element$pfn$lower, digits = 3), > round(rval$element$pfn$upper, digits = 3), sep = ","), > kappa2$coeff.ci, > gwet$coeff.ci, > paste(round(rkappa$pabak$lower, digits = 3), > round(rkappa$pabak$lower, digits = 3), sep = ",")) > > df <- data.frame(hd, ests, cis) > > write.csv(df, > file = paste0(the_dir, "/", basename(.x$TestAssay)), > na = "999.99", > row.names = FALSE) > > } > > [[2]] > function(.x, the_dir){ > #Clean data > dat2 <- .x %>% > select(c(Var1, Var2, Freq)) %>% > pivot_wider(Var1, names_from = Var2, values_from = Freq) %>% > remove_rownames %>% > column_to_rownames( var = "Var1") %>% > as.matrix() > > #Run tests > rval <- epi.tests(dat2, conf.level = 0.95) > rkappa<-epi.kappa(dat2) > gwet <- gwet.ac1.table(dat2) > kappa2 <- kappa2.table(dat2) > > #Export results > hd <- c('sensitivity', 'specificity', 'pfp', 'pfn', 'kappa', 'gwet', 'pabak') > ests <- c(round(rval$elements$sensitivity$est, digits = 3), > round(rval$elements$specificity$est, digits = 3), > round(rval$element$pfp$est, digits = 3), > round(rval$element$pfn$est, digits = 3), > round(kappa2$coeff.val, digits = 3), > round(gwet$coeff.val, digits = 3), > round(rkappa$pabak$est, digits = 3)) > cis <- c(paste(round(rval$elements$sensitivity$lower, digits = 3), > round(rval$elements$sensitivity$upper, digits = 3), sep = ","), > paste(round(rval$elements$specificity$lower, digits = 3), > round(rval$elements$specificity$upper, digits = 3), sep = ","), > paste(round(rval$element$pfp$lower, digits = 3), > round(rval$element$pfp$upper, digits = 3), sep = ","), > paste(round(rval$element$pfn$lower, digits = 3), > round(rval$element$pfn$upper, digits = 3), sep = ","), > kappa2$coeff.ci, > gwet$coeff.ci, > paste(round(rkappa$pabak$lower, digits = 3), > round(rkappa$pabak$lower, digits = 3), sep = ",")) > > df <- data.frame(hd, ests, cis) > > write.csv(df, > file = paste0(the_dir, "/", basename(.x$TestAssay)), > na = "999.99", > row.names = FALSE) > > } > > [[3]] > function(.x, the_dir){ > #Clean data > dat2 <- .x %>% > select(c(Var1, Var2, Freq)) %>% > pivot_wider(Var1, names_from = Var2, values_from = Freq) %>% > remove_rownames %>% > column_to_rownames( var = "Var1") %>% > as.matrix() > > #Run tests > rval <- epi.tests(dat2, conf.level = 0.95) > rkappa<-epi.kappa(dat2) > gwet <- gwet.ac1.table(dat2) > kappa2 <- kappa2.table(dat2) > > #Export results > hd <- c('sensitivity', 'specificity', 'pfp', 'pfn', 'kappa', 'gwet', 'pabak') > ests <- c(round(rval$elements$sensitivity$est, digits = 3), > round(rval$elements$specificity$est, digits = 3), > round(rval$element$pfp$est, digits = 3), > round(rval$element$pfn$est, digits = 3), > round(kappa2$coeff.val, digits = 3), > round(gwet$coeff.val, digits = 3), > round(rkappa$pabak$est, digits = 3)) > cis <- c(paste(round(rval$elements$sensitivity$lower, digits = 3), > round(rval$elements$sensitivity$upper, digits = 3), sep = ","), > paste(round(rval$elements$specificity$lower, digits = 3), > round(rval$elements$specificity$upper, digits = 3), sep = ","), > paste(round(rval$element$pfp$lower, digits = 3), > round(rval$element$pfp$upper, digits = 3), sep = ","), > paste(round(rval$element$pfn$lower, digits = 3), > round(rval$element$pfn$upper, digits = 3), sep = ","), > kappa2$coeff.ci, > gwet$coeff.ci, > paste(round(rkappa$pabak$lower, digits = 3), > round(rkappa$pabak$lower, digits = 3), sep = ",")) > > df <- data.frame(hd, ests, cis) > > write.csv(df, > file = paste0(the_dir, "/", basename(.x$TestAssay)), > na = "999.99", > row.names = FALSE) > > } > > [[4]] > function(.x, the_dir){ > #Clean data > dat2 <- .x %>% > select(c(Var1, Var2, Freq)) %>% > pivot_wider(Var1, names_from = Var2, values_from = Freq) %>% > remove_rownames %>% > column_to_rownames( var = "Var1") %>% > as.matrix() > > #Run tests > rval <- epi.tests(dat2, conf.level = 0.95) > rkappa<-epi.kappa(dat2) > gwet <- gwet.ac1.table(dat2) > kappa2 <- kappa2.table(dat2) > > #Export results > hd <- c('sensitivity', 'specificity', 'pfp', 'pfn', 'kappa', 'gwet', 'pabak') > ests <- c(round(rval$elements$sensitivity$est, digits = 3), > round(rval$elements$specificity$est, digits = 3), > round(rval$element$pfp$est, digits = 3), > round(rval$element$pfn$est, digits = 3), > round(kappa2$coeff.val, digits = 3), > round(gwet$coeff.val, digits = 3), > round(rkappa$pabak$est, digits = 3)) > cis <- c(paste(round(rval$elements$sensitivity$lower, digits = 3), > round(rval$elements$sensitivity$upper, digits = 3), sep = ","), > paste(round(rval$elements$specificity$lower, digits = 3), > round(rval$elements$specificity$upper, digits = 3), sep = ","), > paste(round(rval$element$pfp$lower, digits = 3), > round(rval$element$pfp$upper, digits = 3), sep = ","), > paste(round(rval$element$pfn$lower, digits = 3), > round(rval$element$pfn$upper, digits = 3), sep = ","), > kappa2$coeff.ci, > gwet$coeff.ci, > paste(round(rkappa$pabak$lower, digits = 3), > round(rkappa$pabak$lower, digits = 3), sep = ",")) > > df <- data.frame(hd, ests, cis) > > write.csv(df, > file = paste0(the_dir, "/", basename(.x$TestAssay)), > na = "999.99", > row.names = FALSE) > > } > ``` > > and there are no csvs in my epidata folder. Any > suggestions/corrections welcomed. I haven't used group_map() before, > but I am keen to use it. > > ______________________________________________ > R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see > https://stat.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide http://www.R-project.org/posting-guide.html > and provide commented, minimal, self-contained, reproducible code. >