Вы можете снова использовать lapply()
для извлечения каждого параметра и bind_rows()
:
library(dplyr)
lapply(l, function(x) {
data.frame(t = x$statistic,
df = x$parameter,
pv = x$p.value) # returns a dataframe for each element in l
}) %>% bind_rows()
# t df pv
# 1 -1.031983 13.533116 0.32017136
# 2 -2.458574 9.771018 0.03427922
# 3 1.421821 11.416813 0.18181697
Вы можете сделать это за один снимок:
lapply(d[,-4], function(i) {
res <- t.test(i ~ d$group)
data.frame(t = res$statistic,
df = res$parameter,
pv = res$p.value)
}) %>% bind_rows()
Если выхотите сохранить ссылку на имена столбцов, передайте .id
в bind_rows()
:
lapply(d[,-4], function(i) {
res <- t.test(i ~ d$group)
data.frame(t = res$statistic,
df = res$parameter,
pv = res$p.value)
}) %>% bind_rows(.id='id')
# id t df pv
# 1 q1 -0.7626249 17.32329 0.4559469
# 2 q2 -1.6467070 17.73117 0.1172263
# 3 q3 0.5288851 13.01589 0.6057874
Пример:
set.seed(123)
d <- data.frame(
q1 = rnorm(20),
q2 = rnorm(20),
q3 = rnorm(20),
group = sample(c("A", "B"), size = 20, replace = TRUE))
l <- lapply(d[,-4], function(i) {
t.test(i ~ d$group)
})