首页 > 解决方案 > 在R中按名称合并一个列表的列表元素

问题描述

我有一个包含大量元素的列表(最终应该是一个反向索引)。

> par.list
$NAMEA
[1]  1  2  3  4  5  7  8  9 10

$NAMEB
[1] 6

$NAMEB
[1] 11 12 13 16 17

$NAMEA
[1] 14 15 18 19 20

我寻找的是一种高效的方式,我得到了

> merged.list
$NAMEA
[1]  1  2  3  4  5  7  8  9 10 14 15 18 19 20

$NAMEB
[1] 6 11 12 13 16 17

我确信有一种简单的方法可以做到这一点,但我只是没有在这里找到正确的线程,所以我将不胜感激!

标签: rlistmerge

解决方案


我们可以stack命名list为两列 data.frame 和split

with(stack(par.list), split(values, ind))

-输出

$NAMEA
 [1]  1  2  3  4  5  7  8  9 10 14 15 18 19 20

$NAMEB
[1]  6 11 12 13 16 17

数据

par.list <- list(NAMEA = c(1, 2, 3, 4, 5, 7, 8, 9, 10), NAMEB = 6, NAMEB = c(11L, 
12L, 13L, 16L, 17L), NAMEA = c(14L, 15L, 18L, 19L, 20L))

推荐阅读