测试R中两个向量是增加还是减少

时间:2017-05-17 04:16:31

标签: r function vector

我想知道在基地R中是否有办法测试两个向量(两个向量)是增加还是减少?

例如,在测试FALSEa时,测试应返回b(见下文),测试TRUE时测试应返回c d(见下文)。

a = 5:10
b = 10:5
c = seq(-5, 15)
d = seq(-15, -8)

为了清楚起见,我要求任何两个向量(当两者都有序但无论长度如何时)是否减少(例如,10:0,{ {1}},100:97)然后测试应该返回TRUE,否则如果两个向量都再次增加,则测试应该返回TRUE,否则应该返回FALSE。

2 个答案:

答案 0 :(得分:5)

"两个向量增加"会是

all(diff(x)>0) && all(diff(y)>0)

"两个向量减少"会是

all(diff(x)<0) && all(diff(y)<0)

您可以将这些与||(或)结合使用。

答案 1 :(得分:1)

根据@parvin的说法,&#34;增加&#34;只是&#34;有一个增长趋势&#34;。因此,我建议不要使用diff,而是使用lm

假设我有两个数字向量,xy,这是我的解决方案:

unname(!xor(lm(x ~ seq_along(x))$coefficient[2] > 0, lm(y ~ seq_along(y))$coefficient[2] > 0))

xor完全符合需要,因此我们可以将|||两个语句组合在一起。 unname用于简单地删除系数名称。