选择两个列表的相同列名

唐达帕蒂

我想从两个单独的列表中选择相同的列名,输出将是一个列表,在此示例中:

清单1

> list(p1=data.frame(x=1,y=2), p2=data.frame(x=3,y=4), p3=data.frame(x=1,y=3))
$p1
  x y
1 1 2

$p2
  x y
1 3 4

$p3
  x y
1 1 3

清单2

> list(p1=data.frame(x=11,y=12), p2=data.frame(x=13,y=14), p3=data.frame(x=11,y=13))
$p1
   x  y
1 11 12

$p2
   x  y
1 13 14

$p3
   x  y
1 11 13

输出格式:

> list(p1=data.frame(a=1,b=2,a1=11,b1=12), p2=data.frame(a=3,b=4,a1=13,b1=14), p3=data.frame(a=1,b=3,a1=11,b1=13))
$p1
  a b a1 b1
1 1 2 11 12

$p2
  a b a1 b1
1 3 4 13 14

$p3
  a b a1 b1
1 1 3 11 13

此处列表1和列表2具有相同的数据帧名称,即p1,p2,p3和相似的列名称,即,x,y

最后我想列出并排列出数据帧和列名称的相同名称

在这里,我引用一些参考,但这是一个嵌套列表

可能rapplycbind会解决我的问题,但我不知道如何成功

谢谢。

万维网

一个解决方案。首先,用于bind_cols绑定列。然后使用更改标题set_names

library(tidyverse)

map2(lst1, lst2, bind_cols) %>%
  map(set_names, nm = function(x){
    y <- sub("x", "a", x)
    z <- sub("y", "b", y)
    return(z)
  })
# $p1
#   a b a1 b1
# 1 1 2 11 12
# 
# $p2
#   a b a1 b1
# 1 3 4 13 14
# 
# $p3
#   a b a1 b1
# 1 1 3 11 13

数据

lst1 <- list(p1=data.frame(x=1,y=2), p2=data.frame(x=3,y=4), p3=data.frame(x=1,y=3))
lst2 <- list(p1=data.frame(x=11,y=12), p2=data.frame(x=13,y=14), p3=data.frame(x=11,y=13))

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章