【发布时间】:2021-04-21 02:28:48
【问题描述】:
这个问题之前已经部分回答(例如,here),但是 - 据我所知 - 没有使用可重现示例的完整答案。我想从嵌套数据框中按名称选择变量,计算成对相关性,然后将相关系数和 p 值添加到具有适当名称列的未嵌套数据框中。以下示例产生了预期的结果:
library(tidyverse)
library(broom)
df <- mtcars %>%
nest(data = everything()) %>%
mutate(cor_test = map(data, ~ cor.test(.x$mpg, .x$disp)),
tidied = map(cor_test, tidy)) %>%
unnest(tidied) %>%
select(-c(cor_test, statistic, parameter, conf.low, conf.high, method, alternative)) %>%
rename(c(mpg_disp_estimate = estimate, mpg_disp_p.value = p.value)) %>%
mutate(cor_test = map(data, ~ cor.test(.x$mpg, .x$cyl)),
tidied = map(cor_test, tidy)) %>%
unnest(tidied) %>%
select(-c(cor_test, statistic, parameter, conf.low, conf.high, method, alternative)) %>%
rename(c(mpg_cyl_estimate = estimate, mpg_cyl_p.value = p.value)) %>%
mutate(cor_test = map(data, ~ cor.test(.x$disp, .x$cyl)),
tidied = map(cor_test, tidy)) %>%
unnest(tidied) %>%
select(-c(cor_test, statistic, parameter, conf.low, conf.high, method, alternative)) %>%
rename(c(disp_cyl_estimate = estimate, disp_cyl_p.value = p.value))
显然,这不是一个好的解决方案,因为它涉及一遍又一遍地重复相同的代码。有没有办法用purrr 和broom 更优雅地实现这个目标?
【问题讨论】: