R检查两个列表中的排序顺序

时间:2012-08-22 17:52:18

标签: r

这结果有点挑战。我有三个向量x,y& ž

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'之前。然而,由于“a”在“b”之后出现,因此z无序。有没有快速检查方法?

非常感谢。

1 个答案:

答案 0 :(得分:5)

试试这个:

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

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