2017-03-19 5 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

助けてくれてありがとう!それはまた私が以前に持っていた多くの奇妙な状況を解決します。 –

関連する問題