我正在尝试测试较短的数字 vector 是否是较长的数字 vector 的一部分。例如,如果a = c(2, 3)
和b = c(1, 3, 2, 4, 2, 3, 1)
,那么我试图找到/想到一个可以回答这个问题的函数:a
是b
的一部分吗?输出应为TRUE
。
或者,如果是c = c(1, 3, 2, 4, 1, 3, 1)
,则输出“a
是c
的一部分吗?”应该是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/