r - 使用 R 和 purrr 通过 pmap 使用列表列表来连接多个数据帧

标签 r dplyr plyr purrr

我正在尝试使用 pmap 将嵌入列表中的数据帧连接在一起。

library(purrr)
library(plyr)
# Create a list of 5 data frames
create_df <- function(){
      map(1:5, ~ data.frame(country = c("USA", "CHINA", "JAPAN", "FRANCE"),
                                         col = sample.int(100, 4))
      )
    }
# Create a list of lists
list_of_list_of_dataframes <- map(1:3, ~ create_df())
# join the first element of the 3 lists together. 
list_of_dataframes <- pmap(list_of_list_of_dataframes, join_all, by = 'country', type = 'left')

我遇到的问题是这个 join_all plyr 的功能似乎不起作用。我收到错误: Error in .f(.l[[c(1L, i)]], .l[[c(2L, i)]], .l[[c(3L, i)]], ...) : unused argument (.l[[c(3, i)]])

我能够做到list_of_dataframes <- pmap(list_of_list_of_dataframes, cbind)将数据框绑定(bind)在一起,但它不会删除我也匹配的索引列,并假设左列的顺序相同。

最佳答案

你可以使用dplyr的left_join + purrr的reduce和map2。但它的可读性不如@Tung 的答案。

reduce(list_of_list_of_dataframes, map2, left_join, by = "country")
[[1]]
  country col.x col.y col
1     USA    82    31  59
2   CHINA     7    65  29
3   JAPAN    62    58  52
4  FRANCE    70    88  35

[[2]]
  country col.x col.y col
1     USA    17    77  23
2   CHINA     5    86  92
3   JAPAN    70    55  73
4  FRANCE    68    42  13

[[3]]
  country col.x col.y col
1     USA    51    10  20
2   CHINA    60    82  65
3   JAPAN    65    90  56
4  FRANCE    64    30  10

[[4]]
  country col.x col.y col
1     USA     9    53  36
2   CHINA    60     5  89
3   JAPAN    51    88  69
4  FRANCE     6    14  11

[[5]]
  country col.x col.y col
1     USA    63    30  94
2   CHINA    92    16  21
3   JAPAN    11    52  27
4  FRANCE    58   100  66

关于r - 使用 R 和 purrr 通过 pmap 使用列表列表来连接多个数据帧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51198285/

相关文章:

r - 拟合上下百分位线

r - 从函数发送列名到 ddply

用向量的值替换列中向量的给定索引

R:聚合数据框的列

r - 使用 dplyr 为 Group 中的不同值分配唯一 ID

R - 问题 : Mutate doesn't create a new column

r - 如何在 R 中的 NA 之后生成虚拟变量

r - R中治疗组和地点的多样性指数

r - 如何删除字符串的最后一个单词,但前提是其他单词至少有一个重复?

R:如何在集团层面重新采样日内数据?