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

ASANTOS alexandresantosbr em yahoo.com.br
Segunda Dezembro 28 17:22:38 BRST 2015


Mauro,

      Desculpe a demora, achei o erro, segue a função corrigida:

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 radiância - LISS III 
---------------------------
radconvL<-function(x, band = 2)
{
      BAND <- c("2", "3", "4", "5")
      band <- pmatch(band, BAND)

      if (is.na(band))
          stop("invalid band")

      Lmin = 0
      Qmax = 127
      x <- as.vector(as.matrix(x))
      results <- x

      if(band == 2) {
      Lmax <- 120.64
      } else if(band == 3) {
      Lmax <- 151.31
      } else if(band == 4) {
      Lmax <- 157.57
      } else if(band == 5) {
      Lmax <- 69.03
      }


      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 = 4)
teste

-- 
======================================================================
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
OrcID: orcid.org/0000-0001-8232-6722
Researchgate: https://www.researchgate.net/profile/Alexandre_Santos10
LinkedIn: https://br.linkedin.com/in/alexandre-dos-santos-87961635
======================================================================

Em 22/12/2015 06:58, Mauro Sznelwar escreveu:
> 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 radiância - LISS III
> ---------------------------
> radconvL<-function(x, band = 2)
> {
>       BAND <- c("2", "3", "4", "5")
>       band <- pmatch(band, BAND)
>
>       if (is.na(band))
>           stop("invalid band")
>
>       Lmin = 0
>       Qmax = 127
>       x <- as.vector(as.matrix(x))
>       results <- x
>
>       if (band == 2) {
>       Lmax = 120.64
>       }
>       else if (band == 3) {
>       Lmax = 151.31
>       }
>       else if (band == 4) {
>       Lmax = 157.57
>       }
>       else if (band == 5) {
>       Lmax = 69.03
>       }
>
>       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)
> teste



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