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.
![]() |
This email has been checked for viruses by Avast antivirus software.
|