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

标签 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,3,3),
                  n = c(6:11)) 
df2 <- df2 %>% 
    group_by(m) %>% 
    nest()

ls1 <- list(df1,df2)

可以使用meanmax 等简单函数:

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_dfmap_dbl,这与某些 *apply.

关于r - 对列表中数据框中的每个嵌套数据框应用函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52790604/

相关文章:

r - 不等式约束优化

r - 如何从R中的数字中选择第n位数字?

python - 如何在Python中从另一个字符串中检测一个字符串的重复元素?

python - 通过比较 python 中的两个不同的整数列表来生成零和一的列表

r - 用比例(百分比)扩展列联表

r - 在 R 中有效地重新格式化大型数据集中的列条目

javascript - 如何用 dygraphs 绘制竖条

list - 如何从链表的末尾删除第 N 个节点?

python - 使用严格的填充限制填充 pandas 数据框

替换数据框中的%和逗号