【问题标题】:R function to check if a vector is a subset of another [duplicate]R函数来检查一个向量是否是另一个[重复]的子集
【发布时间】:2021-12-30 21:36:24
【问题描述】:

我需要检查 values_saved_dice 是否是 x 的子集,例如

values_saved_dice <- c(2,2,2)
x <- c(6,3,2,2,5)

我尝试了以下函数,希望它返回 FALSE。

all(is.element(value_saved_dices, x)

但它返回 TRUE,而显然它应该为 FALSE - 因为数字“2”在 value_saved_dices 中出现了 3 次,而 x 只有两次“2”。

不胜感激,谢谢!

【问题讨论】:

  • 您在寻找相邻元素的数量,即grepl(paste(values_saved_dice, collapse = ""), paste(x, collapse = ""))
  • 谢谢,这正是我要找的!正在考虑检查 value_saved_dices 的长度是否等于 x 中唯一值的计数,非常感谢!

标签: r subset


【解决方案1】:

我们可以将paste向量转换成字符串,并使用grepl来检查是否找到了子字符串

grepl(paste(values_saved_dice, collapse = ""), paste(x, collapse = ""))
[1] FALSE

【讨论】:

    【解决方案2】:

    你可以创建一个函数:

    cont = function(x, y) {
      z = x[x %in% setdiff(x, y)]
      length(z) == length(x) - length(y)
    }
    

    输出:

    > values_saved_dice <- c(2,2,2) # triple 2
    > x <- c(6,3,2,2,5)
    > cont(x, values_saved_dice)
    [1] FALSE
    > values_saved_dice <- c(2,2)  # double 2
    > x <- c(6,3,2,2,5)
    > cont(x, values_saved_dice)
    [1] TRUE
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-04-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-24
      • 2018-01-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多