[R-br] Função com vários if e else if que não funciona

Cesar Rabak cesar.rabak em gmail.com
Terça Dezembro 15 19:46:17 BRST 2015


Alexandre,

A melhor forma de você atacar esse problema é usar as facilidades de
depuração do R:

> ?debug

para ver a documentação do depurador padrão.

Um tutorialzinho sobre seu uso pode ser encontrado aqui:
http://www.biostat.jhsph.edu/~rpeng/docs/R-debug-tools.pdf

HTH
--
Cesar Rabak



2015-12-15 18:47 GMT-02:00 ASANTOS <alexandresantosbr em yahoo.com.br>:

> Caros Listeiros,
>
>
>          Estou tentando criar uma função abaixo para converter um
> SpatialGridDataFrame originado de uma imagem de satélite para reflectância,
> mas a função que eu criei (radconvL()) pelo excesso de else if não esta
> funcionando. Meu problema é que não dá erro, o que normalmente ajuda a
> detectar o problema, mas no meu caso a função nem funciona, segue meu CRM
> abaixo, alguém poderia me ajudar?
>
> require(raster)
> require(sp)
>
> # RasterLayer inventado
> r <- raster(nrows=10, ncols=10)
> r <- setValues(r, 1:ncell(r))
> plot(r)
>
> band2<- as(r, 'SpatialGridDataFrame')  ### transforma em
> SpatialGridDataFrame
>
>
>
> ##Função para conversão DN para reflectância
> radconvL<-function(x, band = 2)
> {
>     BAND <- c("2", "3", "4", "5")
>     band <- pmatch(band, BAND)
>     Lmin = 0
>     Qmax = 127
>
>     if (is.na(band))
>         stop("invalid band")
>
>     if (band == 2) {
>     Lmax = 120.64
>     results <- x
>     x <- as.vector(as.matrix(x))
>     x <- Lmin + ((Lmax-Lmin)*x)/Qmax
>     if (class(results) == "SpatialGridDataFrame")
>         results em data[, 1] <- x
>     else if (is.data.frame(x))
>         results <- data.frame(matrix(x, nrow = nrow(results),
>             ncol = ncol(results)))
>     else results <- x
>     results
>     }
>     else if (band == 3) {
>     Lmax = 151.31
>     results <- x
>     x <- as.vector(as.matrix(x))
>     x <- Lmin + ((Lmax-Lmin)*x)/Qmax
>     if (class(results) == "SpatialGridDataFrame")
>         results em data[, 1] <- x
>     else if (is.data.frame(x))
>         results <- data.frame(matrix(x, nrow = nrow(results),
>             ncol = ncol(results)))
>     else results <- x
>     results
>     }
>     else if (band == 4) {
>     Lmax = 157.57
>     results <- x
>     x <- as.vector(as.matrix(x))
>     x <- Lmin + ((Lmax-Lmin)*x)/Qmax
>     if (class(results) == "SpatialGridDataFrame")
>         results em data[, 1] <- x
>     else if (is.data.frame(x))
>         results <- data.frame(matrix(x, nrow = nrow(results),
>             ncol = ncol(results)))
>     else results <- x
>     results
>     }
>     else if(band == 5) {
>     Lmax = 69.03
>     results <- x
>     x <- as.vector(as.matrix(x))
>     x <- Lmin + ((Lmax-Lmin)*x)/Qmax
>     if (class(results) == "SpatialGridDataFrame")
>         results em data[, 1] <- x
>     else if (is.data.frame(x))
>         results <- data.frame(matrix(x, nrow = nrow(results),
>             ncol = ncol(results)))
>     else results <- x
>     results
>     }
> }
> ######
> teste<-radconvL(band2, band=2) ## Aqui não funciona e não sei porque
> teste
>
>
> Muito obrigado,
>
> --
> ======================================================================
> Alexandre dos Santos
> Proteção Florestal
> IFMT - Instituto Federal de Educação, Ciência e Tecnologia de Mato Grosso
> Campus Cáceres
> Caixa Postal 244
> Avenida dos Ramires, s/n
> Bairro: Distrito Industrial
> Cáceres - MT                      CEP: 78.200-000
> Fone: (+55) 65 8132-8112 (TIM)   (+55) 65 9686-6970 (VIVO)
> e-mails:alexandresantosbr em yahoo.com.br
>         alexandre.santos em cas.ifmt.edu.br
> Lattes: http://lattes.cnpq.br/1360403201088680
> ======================================================================
>
> _______________________________________________
> R-br mailing list
> R-br em listas.c3sl.ufpr.br
> https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
> Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e fornea cdigo
> mnimo reproduzvel.
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://listas.inf.ufpr.br/pipermail/r-br/attachments/20151215/cf051ca8/attachment.html>


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