如何测试数组中的行是否与R中的行顺序匹配

时间:2012-04-07 03:31:38

标签: r subset apply

我有一个矢量v3,看起来像这样:

v3 <- matrix(c(1,1,3,3,2,2,
               2,3,1,2,3,1,
               3,2,2,1,1,3), ncol = 3)

     [,1] [,2] [,3]
[1,]    1    2    3
[2,]    1    3    2
[3,]    3    1    2
[4,]    3    2    1
[5,]    2    3    1
[6,]    2    1    3

我想检查行是否是升序或降序。我试过这个: v3[row(v3)[,1],]==(c(1,2,3)||c(3,2,1)) 但它产生了:

      [,1]  [,2]  [,3]
[1,]  TRUE FALSE FALSE
[2,]  TRUE FALSE FALSE
[3,] FALSE  TRUE FALSE
[4,] FALSE FALSE  TRUE
[5,] FALSE FALSE  TRUE
[6,] FALSE  TRUE FALSE

而不是

      [,1]  [,2]  [,3]
[1,]  TRUE TRUE   TRUE
[2,] FALSE FALSE FALSE
[3,] FALSE FALSE FALSE
[4,]  TRUE  TRUE  TRUE
[5,] FALSE FALSE FALSE
[6,] FALSE FALSE FALSE

我该怎么做?

1 个答案:

答案 0 :(得分:4)

这是一种方法:

adtest <- function(v) rep((all(diff(v)>0)) | all(diff(v) < 0), length(v))
t(apply(v3, 1, adtest))

      [,1]  [,2]  [,3]
[1,]  TRUE  TRUE  TRUE
[2,] FALSE FALSE FALSE
[3,] FALSE FALSE FALSE
[4,]  TRUE  TRUE  TRUE
[5,] FALSE FALSE FALSE
[6,] FALSE FALSE FALSE