0

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

首先,我将选择的列收集到一个包含三列的小标题中:应变(=分组因子)、参数(参数名称)和值(实际值)

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

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

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

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

test3 <- lapply(test2, tidy)

该列表现在看起来像这样:

$nbr_CD3p   

group1 group2        p.value

1    SKG Balb/c 0.000001849548

$nbr_DN_CD69nCD25n  

group1 group2   p.value 

1    SKG Balb/c 0.6295371

等等....

由此我需要一个包含以下列的小标题:参数(例如 nbr_CD3p)、group1、group2、p.value。

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

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

4

2 回答 2

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()
于 2017-03-24T13:19:03.680 回答
0

您应该能够使用bind_rows().id 参数:

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

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

于 2017-11-15T14:29:42.173 回答