如何检查向量的元素是按升序排列还是按降序排列?

向量可以包含本质上递增或递减的值,也可以是随机的,这意味着较高的值可能出现在较低的值之后,随后是较高的值。向量元素的递增排列的示例是1、2、3,而与之相反的是递减排列。我们可以通过检查矢量的所有值之间的差是否大于或等于零来检查矢量是按升序还是降序排列,并且可以使用diff函数来完成。

例子

> x1<-1:10
> x1

输出结果

[1] 1 2 3 4 5 6 7 8 9 10
> all(diff(x1)>=0)

输出结果

[1] TRUE

示例

> x2<-sample(1:10,50,replace=TRUE)
> x2

输出结果

[1] 7 8 8 4 8 6 10 9 2 10 2 4 5 4 6 10 2 3 8 2 4 10 3 7 5
[26] 2 7 2 3 6 1 6 3 8 8 8 2 7 9 1 7 1 5 9 6 10 10 8 3 3
> all(diff(x2)>=0)

输出结果

[1] FALSE

示例

> x3<-10:1
> x3

输出结果

[1] 10 9 8 7 6 5 4 3 2 1
> all(diff(x3)>=0)

输出结果

[1] FALSE
> all(diff(x3)<=0)

输出结果

[1] TRUE

示例

> x4<-c(14,17,14,15,29,24,17,18,38)
> x4

输出结果

[1] 14 17 14 15 29 24 17 18 38


> all(diff(x4)>=0)

输出结果

[1] FALSE
> all(diff(x4)<=0)

输出结果

[1] FALSE

示例

> x5<-sample(1:50,100,replace=TRUE)
> x5

输出结果

[1] 23 43 7 16 7 41 21 48 3 28 8 45 37 12 39 43 20 50 33 16 17 35 44 9 29
[26] 27 44 46 15 29 15 17 4 17 8 36 50 32 50 17 33 34 30 31 40 16 22 32 39 21
[51] 40 39 16 31 38 28 3 22 42 31 48 39 15 14 45 15 3 20 50 23 33 39 10 20 41
[76] 49 20 1 40 19 7 1 7 12 16 23 50 3 44 27 40 12 31 12 47 44 18 29 34 32
> all(diff(x5)>=0)

输出结果

[1] FALSE
> all(diff(x5)<=0)

输出结果

[1] FALSE

示例

> x6<-sample(1:1000,100)
> x6

输出结果

[1] 418 260 637 80 646 396 506 791 226 966 468 866 659 415 110 520 128 236
[19] 316 357 255 162 645 867 569 838 997 819 501 913 562 601 24 902 943 758
[37] 716 51 2 215 958 946 249 133 853 67 560 574 917 179 983 517 808 595
[55] 36 332 145 31 504 824 774 663 325 802 892 777 593 35 957 196 805 690
[73] 152 7 441 481 871 786 585 693 563 695 383 273 375 143 794 865 901 915
[91] 581 638 203 94 510 723 346 459 180 746
> all(diff(x6)>=0)

输出结果

[1] FALSE
> all(diff(x6)<=0)

输出结果

[1] FALSE

示例

> x7<-rnorm(50,2)
> x7

输出结果

[1] 0.84261189 2.34635094 3.26053336 1.95924074 3.04214951 1.44615498
[7] 1.76529970 1.83573367 3.78949542 -0.50112590 1.05013127 1.69607013
[13] 1.45119098 2.33131602 1.01201612 2.28410496 0.64955391 2.59566288
[19] 2.08781663 2.22674640 -0.05599111 1.57843878 2.96839553 2.84797728
[25] 1.02880709 2.74873674 2.17837761 1.08775763 3.38554948 3.44496879
[31] 1.75175242 2.68978154 2.87401839 2.11086756 2.14189161 4.09328392
[37] 0.17228319 3.80599050 2.79396647 4.11371253 1.70642279 3.14290420
[43] 2.26725813 2.44773929 2.39364352 0.62493820 1.57672865 0.90599779
[49] 3.72155473 2.11842467
> all(diff(x7)>=0)

输出结果

[1] FALSE

示例

> x8<-rpois(100,5)
> x8

输出结果

[1] 3 2 7 3 7 5 3 9 9 7 3 6 6 3 4 8 5 8 3 4 9 5 10 8 6
[26] 8 8 4 3 2 3 6 6 4 4 6 4 6 7 5 5 2 3 9 9 7 5 3 5 8
[51] 6 7 4 3 6 4 4 4 6 5 5 10 6 8 1 2 5 8 5 5 5 5 3 5 3
[76] 7 7 8 5 9 2 4 5 5 5 2 6 4 6 7 8 5 8 5 2 3 6 7 7 1
> all(diff(x8)<=0)

输出结果

[1] FALSE
> all(diff(x8)>=0)

输出结果

[1] FALSE