Tente sum(vetor, na.rm = TRUE)

Veja também help(sum)

 

De: R-br [mailto:r-br-bounces@listas.c3sl.ufpr.br] Em nome de Franklin Januario da Silva
Enviada em: quarta-feira, 29 de julho de 2015 14:31
Para: r-br@listas.c3sl.ufpr.br
Assunto: [R-br] Dúvida com lógica booleana

 

Boa tarde Srs.

 

Estou iniciando com a linguagem R e me deparei com uma situação da qual não tenho tido êxito em solucionar, preciso iterar sobre um vetor e onde houver valores NA substituí-los por 0, isso porque ao executar a função getValues da biblioteca raster sobre uma linha que contenha em algumas das células o valor NA, e tentar obter o somatório destas, o R me retorna NA, vou tentar ser mais claro:

 

Tenho o seguinte vetor:

 

> vetor

   [1]   575   618   558   549   499   487   450   412   382   342   365   254   311   362   312   335   339   267   300   350   527   555   561   545

  [25]   597   580   548   576   624   664   632   NA   539   567   574   611   660   763   658   599   577   543   514   409   364   374   361   354

  [49]   454   555   620   617   559   559   NA   NA   544   560

 

Se eu fizer sum(vetor) obtenho isso:

 

> sum(vetor)

[1] NA

 

Então tentei iterar sobre o vetor substituindo os valores NA por 0:

 

> for (i in 1:length(vetor)){

+ if (vetor[i]==NA){

+ vetor[i]<-0}}

Error in if (vetor[i] == NA) { : valor ausente onde TRUE/FALSE necessário

 

Pensei que talvez fosse necessário criar um objeto com o valor NA para realizar a comparação, criei o “vazio”, mas obtenho o mesmo erro:

 

> vazio

[1] NA

> for (i in 1:length(vetor)){

+ if (vetor[i]==vazio[1]){

+ vetor[i]<-0}}

Error in if (vetor[i] == vazio[1]) { :

  valor ausente onde TRUE/FALSE necessário

 

Algum sugestão?

 

Grato.

 


        Franklin Januario da Silva
          Agricola
           
          64 3634-2806
          64 9979-0608

          cerradinho.com.br




Avast logo

This email has been checked for viruses by Avast antivirus software.
www.avast.com