gpt4 book ai didi

r - purrr 将 t.test 映射到拆分的 df

转载 作者:行者123 更新时间:2023-12-03 18:25:05 25 4
gpt4 key购买 nike

我是 purrr 的新手,Hadley很有前途的函数式编程R library .我正在尝试采用分组和拆分的数据帧并对变量运行 t 检验。使用示例数据集的示例可能如下所示。

mtcars %>% 
dplyr::select(cyl, mpg) %>%
group_by(as.character(cyl)) %>%
split(.$cyl) %>%
map(~ t.test(.$`4`$mpg, .$`6`$mpg))

这会导致以下错误:
Error in var(x) : 'x' is NULL
In addition: Warning messages:
1: In is.na(x) : is.na() applied to non-(list or vector) of type 'NULL'
2: In mean.default(x) : argument is not numeric or logical: returning NA

我是不是误会了 map作品?或者有更好的方法来思考这个问题吗?

最佳答案

我不完全理解预期的结果,但这可能是答案的起点。 map()来自 purrr用途 .x在公式参数中。

这是完成我认为您正在尝试做的事情的一种方法 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)))

编辑以包含对评论的回复

有了管道,我们很快就会忘乎所以。我认为 Walt 在他的回答中做得很好,但我想确保我提供了 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()

关于r - purrr 将 t.test 映射到拆分的 df,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35558766/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com