如何用扫帚整理R中的多个pairwise.t.tests

时间:2017-03-24 12:46:35

标签: r tidyverse broom

我想知道如何整理以下内容:

首先,我将选择的列聚集到一个包含三列的tibble:strain(=分组因子),params(参数名称)和值(实际值)

decimal a = 159.9m;
decimal b = 355.87m;

a = b + (b = a) - b;

然后我执行多个pairwise.t.test():

sel <- t_tcellact %>% select(strain, contains("nbr_")) %>% gather(params, values, nbr_DP:nbr_CD3p)

结果是pairwise.t.tests的结果列表,我可以用它开始清理:

 test2 <- sel %>% bind_rows(sel) %>% split(.$params) %>% map(~ pairwise.t.test(x=.$values, g=.$strain, p.adj = "none"))

列表现在看起来像那样:

test3 <- lapply(test2, tidy)

依旧......

从这里我需要一个包含以下列的元素:参数(例如nbr_CD3p),group1,group2,p.value。

在这个例子中,我只有两个组,但是我希望以通用的方式进行,当我有多个组时也适用。

有没有人知道如何以优雅的方式达到这一点(没有循环)?

2 个答案:

答案 0 :(得分:0)

我找到了一种方法:

test2 <- sel %>% bind_rows(sel) %>% split(.$params) %>% map(~ pairwise.t.test(x=.$values, g=.$strain, p.adj = "none")) %>% lapply(tidy) %>% do.call("rbind", .) %>% mutate(params = rownames(.)) %>% as_tibble()

答案 1 :(得分:0)

你应该可以使用bind_rows(),利用.id参数:

test3 <- lapply(test2, tidy) %>%
     bind_rows(.id = 'parameter')

这将使用test2的名称作为数据框中名为parameter的新列。所有这一切,在上面的评论中建议用以map_df()替换为aosmith的lapply也应该有效。