r-对列表中数据帧内的每个嵌套数据帧应用函数

r-对列表中数据帧内的每个嵌套数据帧应用函数,r,list,dataframe,nested,purrr,R,List,Dataframe,Nested,Purrr,我有一个要应用函数的结构,但无法使用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

我有一个要应用函数的结构,但无法使用
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)

这不可能完成任务。用“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
,如您所见。请记住,
purr
使您能够通过一些变量(如
map\u df
map\u dbl
)更好地控制输出,这与一些
*apply
不同

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