2017-03-24 4 views
0

Ich frage mich, wie ordentlich die folgenden ordentlich params (Namen von Parametern) und Werte (die ist-Werte)Wie mehrere pairwise.t.tests in R mit Besen

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

Dann führe ich mehrere pairwise.t.test():

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

und das Ergebnis ist eine Liste der Ergebnisse aus der paarweise.tt ests, die ich mit der Reinigung beginnen:

test3 <- lapply(test2, tidy) 

Die Liste sieht nun wie folgt aus:

$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 

und so weiter ....

Daraus Ich brauche eine tibble mit folgenden Spalten: Parameter (z nbr_CD3p), group1, group2, p.value.

In diesem Beispiel hatte ich nur zwei Gruppen, aber ich möchte es in einer generischen Weise auch anwenden, wenn ich mehrere Gruppen habe.

Hat jemand eine Idee, wie man elegant auf diesen Punkt kommt (ohne Schleife)?

Antwort

0

fand ich eine Art und Weise zu tun, dass:

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() 
+0

Haben Sie 'map_df' mit' tidy' anstelle von 'lapply' probiert? Das kann Sie in einem Schritt dorthin bringen, wenn Sie das '.id' Argument verwenden. – aosmith

0

Sie sollten in der Lage bind_rows() zu verwenden, unter Ausnutzung des .id Arguments unter:

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

, dass die Namen von test2 verwenden als eine neue Spalte namens parameter im Datenrahmen. Alles, was gesagt wurde, sollte das Ersetzen von lapply durch map_df() als aosmith, das in einem Kommentar oben vorgeschlagen wird, auch funktionieren.

Verwandte Themen