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

Mauro Sznelwar sznelwar em uol.com.br
Terça Dezembro 22 07:58:04 BRST 2015


Ainda não deu certo, veja:

require(raster)
Loading required package: raster
Loading required package: sp
> 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
+ }
Error in ---------------------------radconvL <- function(x, band = 2) { : 
  object 'radconvL' not found
> ######--
> 
> teste<-radconvL(band2, band = 2)
Error: could not find function "radconvL"
> teste
Error: object 'teste' not found

Boa tarde Mauro,

       Segue a função abaixo a uma simulação de um raster, como se fosse 
uma imagem de satélite e o emprego da função radconvL():

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

-- 
======================================================================
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
======================================================================



---
Este email foi escaneado pelo Avast antivírus.
https://www.avast.com/antivirus



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