r - 在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 元素中创建没有零行的子集。
有没有人有一个简单的解决方案?
解决方案
我们可以用apply
. 遍历行,对非NA元素进行子集化,检查其中是否为0
apply(c, 1, function(x) 0 %in% x[!is.na(x)][1:3])
#[1] TRUE TRUE FALSE TRUE
推荐阅读
- scanning - Xerox WorkCentre 3345 的 AirScan / eSCL 协议输入源从 Platen 更改为 ADF
- arrays - Why does Ruby unpack sometimes return an array, but sometimes return values?
- excel - 向多个收件人发送带有附件的电子邮件
- graphql - 内容丰富的 graphql api 未获取本地化的“linkedfrom”项目
- asp.net-mvc - 为什么标签在 ASP.NET 中没有得到字符串值?
- android - 无法解决改造的依赖关系
- rest - 登录后如何将 JWT 令牌返回给用户?
- r - 使现有函数泛型
- php - 你自己的风格和古腾堡之间的冲突
- c++ - 什么时候在 C++ 中调用静态初始化