Для L oop в R (выведите, если не NA) - PullRequest
1 голос
/ 05 апреля 2020

У меня есть матрица 3x5 ниже, и я хочу напечатать значения не-NA. Я смог добраться до этой точки, но он ничего не печатает.

    [,1] [,2] [,3] [,4] [,5]
[1,] NA  .93   NA  .14  .23
[2,] .12 .92   NA  .55   NA
[3,] NA  NA   .32  .19  .88

for(i in 1:nrow(a)){
   for(j in 1:ncol(a)){
     if(a[i,j] != "NA"){
        print(a[i,j]
     }
   }
}

Я хочу иметь возможность печатать .93, .14, .23 ...

Ответы [ 2 ]

4 голосов
/ 05 апреля 2020

Другой подход без AL oop:

a[!is.na(a)]
4 голосов
/ 05 апреля 2020

Вместо "NA" используйте is.na

for(i in 1:nrow(a)){
   for(j in 1:ncol(a)){
     if(!is.na(a[i,j])){
        print(a[i,j])
     }
   }
}
#[1] 0.93
#[1] 0.14
#[1] 0.23
#[1] 0.12
#[1] 0.92
#[1] 0.55
#[1] 0.32
#[1] 0.19
#[1] 0.88

Или без использования al oop

na.omit(c(t(a)))
#[1] 0.93 0.14 0.23 0.12 0.92 0.55 0.32 0.19 0.88

data

a <- structure(c(NA, 0.12, NA, 0.93, 0.92, NA, NA, NA, 0.32, 0.14, 
0.55, 0.19, 0.23, NA, 0.88), .Dim = c(3L, 5L))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...