В базе R вы можете сделать следующее
lapply(mylist, function(x)
with(x, t.test(Sepal.Length[Group == "High"], Sepal.Length[Group == "Low"])$p.value))
#[[1]]
#[1] 0.2751545
#
#[[2]]
#[1] 0.5480918
#
#[[3]]
#[1] 0.864256
или purrr
/ tidyverse
заход
library(tidyverse)
bind_rows(mylist, .id = "id") %>%
group_by(id) %>%
nest() %>%
mutate(pval = map_dbl(data, ~t.test(
.x$Sepal.Length[.x$Group == "High"],
.x$Sepal.Length[.x$Group == "Low"])$p.value))
## A tibble: 3 x 3
# id data pval
# <chr> <list> <dbl>
#1 1 <tibble [50 × 6]> 0.275
#2 2 <tibble [50 × 6]> 0.548
#3 3 <tibble [50 × 6]> 0.864
Обновление
Квыполнить t-тесты Sepal.Length
между Group = "Low"
и Group = "High"
в пределах Species
, которые вы можете выполнить
lapply(mylist, function(x)
with(x, setNames(sapply(unique(Species), function(y)
t.test(Sepal.Length[Group == "High" & Species == y], Sepal.Length[Group == "Low" & Species == y])$p.value), unique(Species))))
#[[1]]
#versicolor virginica setosa
#0.80669755 0.07765262 0.47224383
#
#[[2]]
# setosa virginica versicolor
# 0.6620094 0.2859713 0.2427945
#
#[[3]]
#versicolor setosa virginica
# 0.5326379 0.6412661 0.5477179
Имейте в виду, что вам придется корректировать необработанные p-значения для несколькихпроверка гипотез.
Чтобы учесть проверку нескольких гипотез, вы могли бы немного изменить приведенный выше код, чтобы получить
lapply(mylist, function(x)
with(x, p.adjust(setNames(sapply(unique(Species), function(y)
t.test(Sepal.Length[Group == "High" & Species == y], Sepal.Length[Group == "Low" & Species == y])$p.value), unique(Species)))))
#[[1]]
#versicolor virginica setosa
# 0.9444877 0.2329579 0.9444877
#
#[[2]]
# setosa virginica versicolor
# 0.7283836 0.7283836 0.7283836
#
#[[3]]
#versicolor setosa virginica
# 1 1 1
Здесь мы используем p.adjust
с коррекцией Холма по умолчанию.