我正在尝试测试较短的数字 vector 是否是较长的数字 vector 的一部分。例如,如果a = c(2, 3)b = c(1, 3, 2, 4, 2, 3, 1),那么我试图找到/想到一个可以回答这个问题的函数:ab的一部分吗?输出应为TRUE

或者,如果是c = c(1, 3, 2, 4, 1, 3, 1),则输出“ac的一部分吗?”应该是FALSE
match()不起作用:

match(a, b)

退货
3  2
%in%运算符也不会:
TRUE  TRUE

我知道有一些字符串匹配的选项,但是我不希望通过转换为字符串来解决此问题。

最佳答案

这是一个尝试。我不认为它 super 快,但也不是 super 慢:

a  = c(2,3)
b1 = c(1, 3, 2, 4, 2, 3, 1)
b2 = c(1, 3, 2, 4, 1, 3, 1)

ainb <- function(a,b) {
  any(apply( embed(b,length(a)), 1, function(x) all(rev(a)==x) ))
}
ainb(a,b1)
#[1] TRUE
ainb(a,b2)
#[1] FALSE

关于r - 测试短数值向量是否为R中长数值向量的一部分的函数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28289361/

10-12 19:01