如何检查确切的向量是否是列表中另一个向量的子集

酯席尔瓦

我浏览了类似的帖子,并尝试了它们,但仍然无法解决我的问题。

我有一个向量列表,如下

y2 <- c(0,0,NA,0,0,0,0)
y <- c(0,0,0,NA,NA,0)
x <- c(0,0,0,0)
li <-list(y2,y,x)

li如果确切的向量是另一个向量的子集,我想从列表中删除向量

例如,在我的情况下,由于是的确切子集,因此我应该有y2y结果x从列表中删除xy2

我写了以下脚本,但它只给出y2作为结果,而忽略了y

UniquePath <- function(PATHS)
{
  for(j in length(PATHS):1)
  {
    for(i in 1:length(PATHS))
    {
      if((i!=j)&(isTRUE(all(is.element(PATHS[[j]],PATHS[[i]])))))
      {
        PATHS<-PATHS[-j]
        break
      }
      else
      {
        next
      }
    }
  }
  return(PATHS)
}
塔拉特

我的方法是(假设您的字符串中没有“;”)

# make li unique
li <- unique(li)
# collapse each unique list element to a length-1 string surrounded by ";" 
x <- sapply(li, function(x) paste0(";", paste(x, collapse = ";"), ";"))
# check each element, if this is found somewhere in any other element
li[sapply(seq_along(x), function(i) !any(grepl(x[i], x[-i], fixed = TRUE)))]
# [[1]]
# [1]  0  0 NA  0  0  0  0
# 
# [[2]]
# [1]  0  0  0 NA NA  0

但是,似乎OP应该构成一个更大的示例,并澄清在注释中针对其他答案提出的一些问题。

注意:在此答案中,当且仅当x的确切序列存在于y中且中间没有任何其他元素时,才将x定义为y的子集。这就是我对问题的理解。

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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何验证一个列表是否是另一个列表的子集?

如何检查列表是否是Java中另一个列表的子集?

如何检查列表是否是Prolog中另一个列表的非空子列表

测试向量是否包含在另一个向量中,包括重复

如何检查一个向量是否等于另一个包含NaN和inf的向量?

如何基于属于另一个向量的一个向量合并向量列表?

如何检查一个列表是否是另一个列表的子集?

用另一个向量对一个向量进行子集

如何在数据表中创建一个向量,该向量对另一个向量中基于子集的值范围求和?

检查一个向量是否是R中另一个向量的超集

检查一个向量中的值是否小于另一个向量(具有不同长度)中的值,并用Y / N答案填充表格

检查另一个向量中是否存在元素并打印其值

如何基于r中另一个向量的值将向量列表拆分为子列表

如何创建另一个向量的随机向量?

如何检查一个向量是否是另一个向量的子序列(顺序相同但不连续)?

确定是否在另一个向量中找到R中向量的任何值

检查列表是否是熊猫数据框中另一个列表的子集

检查向量是否包含另一个向量

如何从R中的另一个向量中减去一个向量

在另一个字符串中搜索确切的字符串

使用返回子集向量值来子集R中的另一个向量

检查向量中的每个数字是否在R中另一个向量中的一些数字之间

在R中的另一个列表列表中检查列表的子集

微软字。如何将确切的字符串复制到另一个文档?

检查一个列表是否是另一个没有重复的子集python

检查一个向量是否包含另一个向量的子串

C++ 检查存储在向量列表中的变量是否包含另一个列表的另一个变量的字符

如何通过另一个向量对一个向量的向量进行排序?

给定两个列表/向量,其中一个是另一个的子集,如何以最有效的方式对齐它们?