2

事实证明这是一个挑战。我有三个向量 x、y 和 z

x = c('a','b','c','d','f','m','n')
y = c('b','c','f')
z = c('b','a','n')

x 是我的超集。它指定元素 a、b、c... 等应出现的顺序。我想要做的是能够判断一个向量是否遵循与 x 相同的顺序。例如,y 与 x 具有相同的顺序。“b”在“c”之前,而“c”又在“f”之前。但是 z 出现故障,因为 'a' 出现在 'b' 之后。有没有快速的方法来检查这个?

提前非常感谢。

4

1 回答 1

5

试试这个:

all(diff(match(y,x)) > 0)
[1] TRUE
all(diff(match(z,x)) > 0)
[1] FALSE

match返回 中每个元素的数值位置x,然后我们只需检查该向量的值是否始终在增加。

于 2012-08-22T17:56:52.207 回答