我不完全理解预期的结果,但这可能是答案的起点。 map()
from在公式参数中purrr
使用。.x
这是完成我认为您正在尝试使用 just 的一种方法purrr
。
mtcars %>%
split(as.character(.$cyl)) %>%
map(~t.test(.x$mpg))
但是,purrr::by_slice()
与dplyr::group_by()
.
library(purrr)
library(dplyr)
mtcars %>%
dplyr::select(cyl, mpg) %>%
group_by(as.character(cyl)) %>%
by_slice(~ t.test(.x$mpg))
或者,您可以完全跳过purrr
使用dplyr:::summarise()
.
library(purrr)
library(dplyr)
mtcars %>%
dplyr::select(cyl, mpg) %>%
group_by(as.character(cyl)) %>%
summarise(t_test = data_frame(t.test(.$mpg)))
如果嵌套data.frame
令人困惑,broom
可以帮助我们得到一个简单data.frame
的结果摘要。
purrr
+ broom
+tidyr
library(broom)
library(tidyr)
mtcars %>%
group_by(as.character(cyl)) %>%
by_slice(~tidy(t.test(.x$mpg))) %>%
unnest()
dplyr
+broom
library(broom)
mtcars %>%
dplyr::select(cyl, mpg) %>%
group_by(as.character(cyl)) %>%
do(tidy(t.test(.$mpg)))
编辑以包括对评论的回应
有了管道,我们可以很快地忘乎所以。我认为沃尔特的回答做得很好,但我想确保我提供了一个purrr
-ty 答案。我希望使用pipeR
不会过于混乱。
library(purrr)
library(dplyr)
library(broom)
library(tidyr)
library(pipeR)
mtcars %>>%
(split(.,.$cyl)) %>>%
(split_cyl~
names(split_cyl) %>>%
(
cross_d(
list(against=.,tested=.),
.filter = `==`
)
) %>>%
by_row(
~tidy(t.test(split_cyl[[.x$tested]]$mpg,split_cyl[[.x$against]]$mpg))
)
) %>>%
unnest()