首页 > 解决方案 > 在R中按行检查前3个非NA元素中是否存在零

问题描述

我正在尝试删除前 3 个非 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 以便在前 3 个非 NA 元素中创建没有零行的子集。

有没有人有一个简单的解决方案?

标签: rindexingapplyzero

解决方案


我们可以用apply. 遍历行,对非NA元素进行子集化,检查其中是否为0

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

推荐阅读