[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