r - 根据R中的数据帧名称合并存储在不同长度列表中的数据帧
问题描述
我有以下两个列表:
A_1 <- data.frame(col1 = 1:5, col2 = rnorm(5))
A_2 <- data.frame(col1 = 1:5, col2 = rnorm(5))
B_1 <- data.frame(col1 = 1:5, col2 = rnorm(5))
B_2 <- data.frame(col1 = 1:5, col2 = rnorm(5))
B_3 <- data.frame(col1 = 1:5, col2 = rnorm(5))
C_1 <- data.frame(col1 = 1:5, col2 = rnorm(5))
list1 <- list(A_1 = A_1, A_2 = A_2, B_1 = B_1, B_2 = B_2, B_3 = B_3, C_1 = C_1)
A <- data.frame(col1 = 1:5, col3 = LETTERS[1:5])
B <- data.frame(col1 = 1:5, col3 = LETTERS[6:10])
C <- data.frame(col1 = 1:5, col3 = LETTERS[11:15])
list2 <- list(A = A, B = B, C = C)
我想根据数据框名称中的字母将数据框与列中的数据框list1
合并list2
。col1
换句话说,我想将A_1
fromlist1
与A
from合并list2
;我想与A_2
from合并;我想与from合并;我想与from合并;我想与from合并;我想合并from与from 。生成的数据框列表应如下所示:list1
A
list2
B_1
list1
B
list2
B_2
list1
B
list2
B_3
list1
B
list2
C_1
list1
C
list2
$A_1
col1 col2 col3
1 1 0.06356074 A
2 2 -0.08646429 B
3 3 0.65156169 C
4 4 0.83935642 D
5 5 -0.76709566 E
$A_2
col1 col2 col3
1 1 0.3347519 A
2 2 -1.5905887 B
3 3 -0.6629217 C
4 4 -1.0208914 D
5 5 -0.3978965 E
$B_1
col1 col2 col3
1 1 0.5910048 F
2 2 -0.7017961 G
3 3 0.4436402 H
4 4 0.5051056 I
5 5 1.9631446 J
$B_2
col1 col2 col3
1 1 1.59825082 F
2 2 1.12307589 G
3 3 0.55073043 H
4 4 0.06900526 I
5 5 -1.74212727 J
$B_3
col1 col2 col3
1 1 -3.408669559 F
2 2 0.871771331 G
3 3 -1.811021818 H
4 4 1.735995986 I
5 5 -0.007419926 J
$C_1
col1 col2 col3
1 1 -0.6678336 K
2 2 1.5844579 L
3 3 -1.4021920 M
4 4 -1.1643714 N
5 5 -0.3893558 O
我该怎么做呢?谢谢!
解决方案
match
列表名称,然后循环使用Map
到merge
每个列表中的适当数据集:
m <- match(substr(names(list1),1,1), names(list2))
Map(merge, list1, list2[m], by="col1")
purrr/dplyr/tidyverse
相当于:
map2(list1, list2[m], left_join)
推荐阅读
- c - 尝试通过双指针变量打印向量值,该变量是指向在 C 中的函数内创建的向量的指针
- scala - 在scala中的两个列表之间交换元素时生成所有可能性
- javascript - 创建一个接受另一个函数作为参数的函数
- html - 带有“vaadin-grid”的 HTML 数据属性
- reactjs - Typescript React 别名 HOC(使用
) 打字问题 - sql - regexp_substr PL / SQL中的非整数starting_position
- python - NLTK 中的实际单词转换功能是否有任何缩写
- vb.net - VB .Net DataGridView ComboBox - 如何引用尚未保存的显示文本?
- c# - EF 核心 2.1。如何恢复迁移“n”步
- jquery - 仅在最后一页显示列总和