Проверка наличия нулей в первых 3-х не NA элементах по строке в R

Я пытаюсь удалить строки во фрейме данных, которые содержат нули в первых трех элементах, отличных от NA.

Например:

> c <- matrix(c(NA,NA,4,5,0,7,0,NA,NA,NA,NA,8,9,10,0,4,5,0,NA,NA), ncol=5, nrow = 4, byrow=T)
> c
     [,1] [,2] [,3] [,4] [,5]
[1,]   NA   NA    4    5    0
[2,]    7    0   NA   NA   NA
[3,]   NA    8    9   10    0
[4,]    4    5    0   NA   NA

Я ожидаю получить такой результат, как: TRUE TRUE FALSE TRUE, чтобы создать подмножество без строк с нулями в первых трех элементах, не относящихся к NA.

У кого-нибудь есть простое решение для этого?


person ACLAN    schedule 01.08.2018    source источник


Ответы (1)


Мы можем сделать это с помощью apply. Перебрать строки, подмножить элементы, отличные от NA, проверить, есть ли в нем 0

apply(c, 1, function(x) 0 %in% x[!is.na(x)][1:3])
#[1]  TRUE  TRUE FALSE  TRUE
person akrun    schedule 01.08.2018