2017-04-11 2 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 이하의 값이 될 때마다 파란색 점이 강조 표시됩니다. (예 : 56에서 23, 23까지 강조 표시됨) 마찬가지로 numberVector의 값이 50 미만의 값에서 50 이상의 값으로 바뀔 때마다 파란색 점이 강조 표시됩니다. (예 : 33 ~ 60, 60이 강조 표시됨)

부울을 수동으로 booleanVector에 입력했습니다. 그런데 어떻게 numberVector와 같은 벡터가 주어진다면 그런 부울 벡터를 생성 할 수 있을까요?

Example graph

답변

1

우리는 마이너스 쉰의 징후에 다른 볼 수 있습니다. 예를 들어,

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

sign(x-50)은 기본적으로 그 위 또는 아래 라인을 추적합니다. diff()은 값 쌍의 차이를보고 변경 사항을 찾습니다. 첫 번째 값이 라인의 한쪽에서 시작한다고 가정하기 때문에 FALSE를 추가합니다.

관련 문제