从列表中删除重复的元素

dan*_*dan 4 redundancy r list

我有一个list的character vectorS:

my.list <- list(e1 = c("a","b","c","k"),e2 = c("b","d","e"),e3 = c("t","d","g","a","f"))
Run Code Online (Sandbox Code Playgroud)

我正在寻找一个function对于任何character横跨出现不止一次list的vectorS(在每vector一个character只能出现一次),将只保留第一次亮相.

因此,此示例的结果列表将是:

res.list <- list(e1 = c("a","b","c","k"),e2 = c("d","e"),e3 = c("t","g","f"))
Run Code Online (Sandbox Code Playgroud)

注意,可以消除整个vector中的list整数,使得结果list中的元素数量不一定必须等于输入list.

akr*_*run 7

我们可以unlist的list,得到一个合理的list使用duplicated和提取"my.list"基于逻辑索引的元素

un <- unlist(my.list)
res <- Map(`[`, my.list, relist(!duplicated(un), skeleton = my.list))
identical(res, res.list)
#[1] TRUE
Run Code Online (Sandbox Code Playgroud)