2017-04-11 71 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()着眼於對價值的尋求變化之間的差異。我們添加一個假,因爲我們假設第一個值上線的一側開始。