我想知道在基地R中是否有办法测试两个向量(两个向量)是增加还是减少?
例如,在测试FALSE
和a
时,测试应返回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。
答案 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
。
假设我有两个数字向量,x
和y
,这是我的解决方案:
unname(!xor(lm(x ~ seq_along(x))$coefficient[2] > 0, lm(y ~ seq_along(y))$coefficient[2] > 0))
xor
完全符合需要,因此我们可以将|
或||
两个语句组合在一起。 unname
用于简单地删除系数名称。