标记数字向量中的位置,其中值高于或低于特定阈值

时间:2017-04-11 04:26:55

标签: r

我不确定如何描述这个问题,所以我只是在这里写一些代码来说明我想要实现的目标。

numberVector = c(56,23,10,26,11,9,33,60,71,1)
xaxisVector = c(1:length(numberVector))
booleanVector = c(FALSE,TRUE,FALSE,FALSE,FALSE,FALSE,FALSE,TRUE,FALSE,TRUE)
plot(xaxisVector,numberVector)
abline(a=50,b=0,col="red")
points(xaxisVector[booleanVector],numberVector[booleanVector],col="blue",pch=20)

如您所见,上面的代码生成的图形如下所示。

正如您所看到的,每当numberVector中的值从50以上的值变为50以下的值时,我都会以蓝色突出显示该点。 (例如从56到23,23突出显示) 同样,每当numberVector中的值从低于50的值变为高于50时,我都会以蓝色突出显示该点。 (例如从33到60,突出显示60)

我在booleanVector中手动输入了布尔值。但是,如果给出像numberVector这样的矢量,我将如何生成这样的布尔矢量?

Example graph

1 个答案:

答案 0 :(得分:1)

我们可以看看零下五十的标志中的不同。例如

booleanVector2 <- c(FALSE, diff(sign(numberVector-50))!=0)
all(booleanVector==booleanVector2)
# [1] TRUE

sign(x-50)基本上跟踪线条的上方或下方。 diff()查看值对之间的差异以查找更改。我们加入一个FALSE,因为我们假设第一个值从该行的一侧开始。