我有一个我想在其上应用函数的结构,但无法使用 purrr::map
正确地实现它。
列表中有两个嵌套的数据框。函数需要应用于嵌套数据帧的所有元素。重现数据结构:
df1 <- data.frame(a = c(1,1,2,2,3,3),
b = c(1,2,3,4,5,6))
df1 <- df1 %>%
group_by(a) %>%
nest()
df2 <- data.frame(m = c(1,1,1,2,3,3),
n = c(6:11))
df2 <- df2 %>%
group_by(m) %>%
nest()
ls1 <- list(df1,df2)
可以使用mean
或max
等简单函数:
f1 <- function(x) {
x %>%
unnest() %>%
summarise(b = sum(b))
}
ls2 <- ls1 %>% map(~ .x, f1)
这无法完成工作。用“purrr”解决这个问题的想法是理想的,但欢迎任何想法。
最佳答案
我不知道这是否是最好的解决方案,但它应该可以完成工作:
library(purrr)
map(ls1, function(x) {
map(x, mean)
})
# [[1]]
# [[1]]$a
# [1] 2
#
# [[1]]$b
# [1] 3.5
#
#
# [[2]]
# [[2]]$m
# [1] 1.833333
#
# [[2]]$n
# [1] 8.5
如您所见,基本上我嵌套了两个 map
。请记住,purrr
使您能够更好地控制某些变体的输出,例如 map_df
或 map_dbl
,这与某些 *apply不同
.
关于r - 对列表中数据框中的每个嵌套数据框应用函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52790604/