Comparar 2 rasterbricks usando pacote TSdist

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
participantes (1)
-
Jackson Rodrigues