Snippets

Dénes Türei Perform tests between many conditions using dplyr, nest from tidyr and future_map2_dbl from furrr.

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)

Comments (0)

HTTPS SSH

You can clone a snippet to your computer for local editing. Learn more.