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@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@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@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@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@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@yahoo.com.br
        alexandre.santos@cas.ifmt.edu.br
Lattes: http://lattes.cnpq.br/1360403201088680
======================================================================

_______________________________________________
R-br mailing list
R-br@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.