r - 检查列表是否包含 R 中的另一个列表

标签 r list subset

我想检查一个列表(或等效的向量)是否包含在另一个列表中,而不是它是否是其中的一个子集。让我们假设我们有

r <- c(1,1)
s <- c(5,2)
t <- c(1,2,5)

该函数的行为应如下所示:
is.contained(r,t) 
[1] FALSE
# as (1,1) is not contained in (1,2,5) since the former 
# contains two 1 whereas the latter only one.

is.contained(s,t)
[1] TRUE

运营商%in%检查子集,因此它会返回 TRUE在这两种情况下,同样 allany .我确定有一个单线,但我只是没有看到它。

最佳答案

如何使用循环。我遍历第一个向量并检查它是否存在于第二个向量中。如果它在那里,我将它从第二个向量中删除。这个过程还在继续。

is.contained=function(vec1,vec2){
    x=vector(length = length(vec1))
    for (i in 1:length(vec1)) {
        x[i] = vec1[i] %in% vec2
        if(length(which(vec1[i] %in% vec2)) == 0) vec2 else 
            vec2=vec2[-match(vec1[i], vec2)]
    }
    y=all(x==T)
    return(y)
}

关于r - 检查列表是否包含 R 中的另一个列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39338394/

相关文章:

r - 检查等长列表中元素的长度

在启动时将 R/Rook 作为 Web 服务器运行

r - 过滤/子集数据框到变化的阈值

Python 3——[s for s in subsets(S)] and yield

r - 使用 .png 文件在 R 中创建动画 (.gif)

r - 如何更新 data.table 中动态选择的列

python - pandas groupby 作为列表返回空,同时使用 agg 和 apply 函数

python - 根据值列表重复每个元素

python - 如何在 Python 中替换多维列表的第 n 个元素?

python - 数组大小为 'k' 的每个可能子集的最大元素之和