2017-04-11 69 views
3

我不知道该如何形容这个问题,所以我只是打算写一点这里代码来说明什么,我想实现。标记位置,其中值落在高于或低于某一阈值

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以下的值时,我都会用蓝色突出显示该点。每在numberVector值从低于50的值,以高于50进入时间(例如,从56到23,23被高亮显示) 同样地,我突出在蓝的点。 (例如,从33到60,60被高亮显示)

我已经手动输入的布尔值在booleanVector。但是,我怎么会产生像给出任何numberVector矢量布尔的这样的载体?

Example graph

回答

1

我们可以看看在减50的标志不同。例如

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

sign(x-50)基本上保持跟踪,如果它的上面或下面的线。该diff()着眼于对价值的寻求变化之间的差异。我们添加一个假,因为我们假设第一个值上线的一侧开始。