2017-03-19 2 views
0

의 논리 함수를 적용 I 단층 래스터의 논리 함수를 적용 :R 래스터

Warning messages: 
1: In if (x < 0.4) {:the condition has length > 1 and only the first element will be used 
2: In if (x < 0.4) {:the condition has length > 1 and only the first element will be used 

를 단지 전자 방정식을 실행한다 :

f=function(x){if(x<0.4){return(1.88+209.5*x)} else {return(-239.6+810*x)}} 
r=calc(x,f) 
#where "x" is a single raster 

실행 한 결과, 리턴한다. 여기에 무슨 문제가 있을까요?

답변

1

if은 논리적 조건의 벡터를 사용하도록 설계되지 않았습니다. 반면에, ifelse은 다음과 같습니다 예를 들어

f <- function(x) ifelse(x<0.4,1.88+209.5*x,-239.6+810*x) 

:

> x <- 0.8*runif(5) 
> x 
[1] 0.7632327 0.2786816 0.2766365 0.6614716 0.7316004 
> f(x) 
[1] 378.61851 60.26380 59.83534 296.19197 352.99633 

당신이 래스터에서 작동하는 방법을 보려면이를 테스트해야합니다.

+0

도움을 주셔서 감사합니다! 그것은 또한 내가 전에 가지고 있었던 많은 다른 이상한 상황을 해결한다. –

관련 문제