[R-br] Função com vários if e else if que não funciona - O RETORNO
ASANTOS
alexandresantosbr em yahoo.com.br
Quarta Fevereiro 3 20:12:45 BRST 2016
Obrigado Thiago, mas isso eu havia recebido, mas não entendi porque ele
não lê band=2, mas lê band=3, band=4 e band=5!!!!
Caros Listeiros,
A um mês atrás eu consegui criar a função abaixo com a ajuda de
vocês, no entanto, descobri que ela funciona quando seleciono band=3, 4
ou 5, mas para band=2 que é a primeira condição da função não funciona
(Error in radconvL(band2, band = 2) : object 'Lmax' not found ), alguém
poderia me ajudar?
Segue CRM:
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
}
######--
teste2<-radconvL(band2, band = 2)
teste2
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
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 03/02/2016 17:10, Thiago Serafim escreveu:
> Lendo a mensagem de erro, vemos que Lmax não foi definido.
> Olhando seu programa, Lmax só é definido quando band é 2, ou 3, ou 4 ou 5.
> Conclui-se que, na sua chamada de função, band não é igual a nenhum
> desses valores.
>
> Quando a linha x <- Lmin + ((Lmax-Lmin)*x)/Qmax é executada, acontece
> o erro.
>
>
> 2016-02-03 17:44 GMT-02:00 ASANTOS <alexandresantosbr em yahoo.com.br
> <mailto:alexandresantosbr em yahoo.com.br>>:
>
> Caros Listeiros,
>
> A um mês atrás eu consegui criar a função abaixo com a ajuda
> de vocês, no entanto, descobri que ela funciona quando seleciono
> band=3, 4 ou 5, mas para band=2 que é a primeira condição da
> função não funciona (Error in radconvL(band2, band = 2) : object
> 'Lmax' not found ), alguém poderia me ajudar?
>
> Segue CRM:
>
> 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 <http://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
> }
> ######--
>
> teste2<-radconvL(band2, band = 2)
> teste2
>
> 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 <tel:%28%2B55%29%2065%208132-8112> (TIM)(+55) 65 9686-6970 <tel:%28%2B55%29%2065%209686-6970> (VIVO)
> e-mails:alexandresantosbr em yahoo.com.br
> <mailto:e-mails:alexandresantosbr em yahoo.com.br>
> alexandre.santos em cas.ifmt.edu.br
> <mailto:alexandre.santos em cas.ifmt.edu.br>
> Lattes:http://lattes.cnpq.br/1360403201088680
> OrcID:orcid.org/0000-0001-8232-6722 <http://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 28/12/2015 16:22, ASANTOS 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 <http://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
>
>
> _______________________________________________
> R-br mailing list
> R-br em listas.c3sl.ufpr.br <mailto: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
> forneça código mínimo reproduzível.
>
>
>
>
> _______________________________________________
> 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 forne�a c�digo m�nimo reproduz�vel.
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://listas.inf.ufpr.br/pipermail/r-br/attachments/20160203/03a3787d/attachment.html>
Mais detalhes sobre a lista de discussão R-br