R函数检查一个向量是否是另一个向量的子集

R function to check if a vector is a subset of another

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

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

我尝试了以下函数,预计它应该 return FALSE。

all(is.element(value_saved_dices, x)

但它 return 是真的,而显然它应该是假的 - 因为数字“2”在 value_saved_dices 中出现了 3 次而 x 只有“2”两次。

非常感谢任何帮助,谢谢!

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

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

您可以创建一个函数:

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