我有一个列表,每个组件都是一个数字向量.组件中有一些常见的数字.下面是一个例子:

ls <- list(c(7, 4, 9), c(5, 9, 2, 19), c(3, 13, 4, 2))

组件%2的第二个元素已出现在组件%1中.组件%3的第三个和第四个元素已分别出现在组件%1和组件%2中.我想删除后一个组件中已经出现在前一个组件中的元素.具体的例子,我想要ls2 <- list(c(7, 4, 9), c(5, 2, 19), c(3, 13))美元.

我希望编写一个R脚本来自动执行上面的任务,它可以推广到其他列表.

推荐答案

使用setdiff:

ls <- list(c(7, 4, 9), c(5, 9, 2, 19), c(3, 13, 4, 2))

foo <- function(x) {
  for (i in seq_along(x)[-1]) {
    x[[i]] <- setdiff(ls[[i]], unlist(ls[seq_len(i - 1)]))
  }
  x
}

ls2 <- foo(ls)
#[[1]]
#[1] 7 4 9
#
#[[2]]
#[1]  5  2 19
#
#[[3]]
#[1]  3 13

R相关问答推荐

如何将y轴设置为在ggplot 2中x=0处与x轴相交?

Select R中列未排序的收件箱中的最后一个按顺序编号的列

图片中令人惊讶的行为

将虚线添加到每个站点的传奇中平均

即使声明引发错误,R函数也会在第二次try 时返回结果

在水平条形图中zoom x_轴

R gtsummary tBL_summary,包含分层和两个独立分组变量

使用scale_x_continuous复制ggplot 2中的离散x轴

如何替换R中数据集列中的各种字符串

使用tidyverse / Mutate的存款账户余额

根据R中的另一个日期从多列中 Select 最近的日期和相应的结果

获取列中值更改的行号

用关联字符串替换列名的元素

提取第一个下划线和最后一个下划线之间的任何内容,例外情况除外

如何在R forestplot中为多条垂直线分配唯一的 colored颜色 ?

R如何计算现有行的总和以添加新的数据行

如何使用前缀作为匹配来连接数据帧?

将列的值乘以在不同数据集中找到的值

R仅当存在列时才发生变异

Ggplot2如何找到存储在对象中的残差和拟合值?