[R-br] Comparar 2 rasterbricks usando pacote TSdist

Jackson Rodrigues jacksonmrodrigues em gmail.com
Qui Maio 28 09:40:27 -03 2020


Pessoal
Bom Dia!

Estou com uma demanda aqui e não estou consigo enxergar onde estou errando.
Preciso comparar 2 rasterbricks usando a função de dissimilaridade
CorDistance  do pacote TSdist.
No entanto ela não funciona com NA's.
Eu tentei remover ou ignorar os NA's sem sucesso.

Alguém poderia me dar uma luz sobre como proceder?
Abaixo está uma cópia do código que estou trabalhando.

Saudações,

Jackson

###################
library(raster)
library(TSdist)

set.seed(12)
r <- raster(nrow=10, ncol=10)
s <- lapply(1:200, function(i) setValues(r, rnorm(ncell(r),
                                                  sample.int(5,1), 0.5)))
s <- stack(s)
s[s < 0] <- NA
s2<-s^2

# Visualizando que alguns pixels são NA
hasna <- stackApply(s, indices = 1, fun = function(x, na.rm){anyNA(x)})
hasna2 <- stackApply(s2, indices = 1, fun = function(x, na.rm){anyNA(x)})

par(mfrow=c(1,2))
plot(hasna);plot(hasna2)

# CorDistancenão funciona com NA
CorDistance(as.vector(s[1]),as.vector(s2[1]))
[1] 0.2192382

CorDistance(as.vector(s[2]),as.vector(s2[2]))
<simpleError in .common.ts.sanity.check(x): NA in the series>
  [1] NA

fun <- function(x,y){
  out <- ifelse(anyNA(x) | anyNA(y), #Preciso resolver esta questão
                yes = NA,
                no = unname(CorDistance(x,y)))
  return(out)
}

# Aqui funciona
fun(as.vector(s[1]),as.vector(s2[1]))
[1] 0.2192382

# Aqui não funciona
fun(as.vector(s[2]),as.vector(s2[2]))
[1] NA

new_s1 <- fun(s,s2)
<simpleError in if (any(is.na(x))) { stop("NA in the series")}:
  argument is not interpretable as logical>

# Veja que não funciona com calc
new_s2 <- calc(s,s2, fun = fun)
Error in .calcTest(x[1:5], fun, na.rm, forcefun, forceapply) :
  cannot use this function

plot(s_out)
#############

-- 

Jackson M. Rodrigues
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://listas.inf.ufpr.br/pipermail/r-br/attachments/20200528/519747c0/attachment.html>


Mais detalhes sobre a lista de discussão R-br