r - R - 使用其他矩阵中的过滤器获取矩阵的值
问题描述
我有以下类型的矩阵:
c1 | c2 | c3 | c4 |
---|---|---|---|
1234 | 123 | 124 | 134 |
234 | 23 | 14 | 124 |
1234 | 123 | 124 | 134 |
234 | 23 | 14 | 124 |
我有另一个矩阵,它告诉我什么是正常的单元格:
c1 | c2 | c3 | c4 |
---|---|---|---|
1 | 1 | 1 | 1 |
1 | 0 | 1 | 1 |
0 | 0 | 1 | 1 |
0 | 1 | 0 | 1 |
我想获取表 1 中前 2 列的值,表 2 中的值为 1:
c1 | c2 |
---|---|
1234 | 123 |
234 | 14 |
124 | 134 |
23 | 124 |
我可以用 for lop and head 解决它,但有更好的方法吗?
解决方案
您可以覆盖非1
withNA
并使用apply
with head
。
x[y!=1] <- NA
t(apply(x, 1, function(z) head(z[!is.na(z)], 2)))
# [,1] [,2]
#[1,] 1234 123
#[2,] 234 14
#[3,] 124 134
#[4,] 23 124
数据:
x <- as.matrix(read.table(header=TRUE, text="c1 c2 c3 c4
1234 123 124 134
234 23 14 124
1234 123 124 134
234 23 14 124"))
y <- as.matrix(read.table(header=TRUE, text="c1 c2 c3 c4
1 1 1 1
1 0 1 1
0 0 1 1
0 1 0 1"))
推荐阅读
- python-3.x - 如何在pandas数据帧中将批量大小超过指定阈值的1(ON)标志切换为0?
- php - 在使用 PHP 构建的网站上构建 DIV 布局
- java - 封装形式不同
- angular - 检测哪些是用户的原始位置
- css - Mat-form-field 在不同的浏览器中具有不同的高度
- c# - c# Filter int for specific parameter
- swift - 登录应用程序时验证 inAppPurchase 订阅帐户还有哪些其他凭据
- node.js - Node.JS 服务层设计
- yocto - 根据 yocto 中的外部变量更改不同配方的内核配置
- python - 错误:AttributeError:“powerOfTwo”对象没有属性“x”