Created by
Dénes Türei
| #!/usr/bin/env Rscript
# Denes Turei 2018
# turei.denes@gmail.com
# Perform tests between many conditions using dplyr,
# nest from tidyr and future_map2_dbl from furrr.
require(dplyr)
require(purrr)
require(furrr)
require(tidyr)
d <- data.frame(
grp = c(
rep('A', 7),
rep('B', 9),
rep('A', 8),
rep('B', 11)
),
ctrl = c(
rep('control', 16),
rep('sample', 19)
),
val = rnorm(35)
)
test.results <- d %>%
filter(
ctrl == 'sample'
) %>%
group_by(grp) %>%
nest() %>%
left_join(
d %>%
filter(ctrl == 'control') %>%
group_by(grp) %>%
nest(),
by = c('grp'),
suffix = c('_sample', '_control')
) %>%
mutate(
ttest_pval = unlist(
future_map2_dbl(
data_control,
data_sample,
function(d1, d2){
`if`(
dim(d1)[1] > 1 & dim(d2)[1] > 1,
t.test(d1$val, d2$val)$p.value,
NA
)
},
.progress = TRUE
)
)
) %>%
select(-data_sample, -data_control)
|