繁体   English   中英

基于单元格值的子集矩阵

[英]subset matrix based on cell values

这应该很简单,但是我无法弄清楚:

我在每个单元格中都有一个带有整数值的方阵(所有与所有距离计算的结果)。 我想基于单元格值(例如,单元格== 8或单元格<= 6等)对矩阵进行子集化。

foo[1:5, 1:5]
                CASSLLAGAPEQFF CASSQVGLATGTQYF CASSSGTQYTQYF CASRITSGGKTQYF CATSDSRGKTQYF
CASSLLAGAPEQFF               0             999           999              8           999
CASSQVGLATGTQYF            999               0           999            999           999
CASSSGTQYTQYF              999             999             0            999             6
CASRITSGGKTQYF               8             999           999              0           999
CATSDSRGKTQYF              999             999             6            999             0

dput:

结构(c(0,999,999,8,999,999,0,999,999,999,999,999,0,999,6,8,8,999,999,0,999,999,999,6, 999,0),.Dim = c(5L,5L),.Dimnames = list(c(“ CASSLLAGAPEQFF”,“ CASSQVGLATGTQYF”,“ CASSSGTQYTQYF”,“ CASRITSGGKTQYF”,“ CATSDSRGKTQYF”),c(“ CASSLLAGA CASSQVGLATGTQYF”,“ CASSSGTQYTQYF”,“ CASRITSGGKTQYF”,“ CATSDSRGKTQYF”)))

单元格== 8的预期结果将是2x2的矩阵

               CASSLLAGAPEQFF  CASRITSGGKTQYF
CASSLLAGAPEQFF 0                8
CASRITSGGKTQYF 8                0

行和列的名称与子设置无关(但我想保留名称)。 最简单的方法是什么?

谢谢你的帮助!

您可以将==8替换为任何其他过滤条件。

foo[rowSums(foo==8)>0,colSums(foo==8)>0]
#               CASSLLAGAPEQFF CASRITSGGKTQYF
#CASSLLAGAPEQFF              0              8
#CASRITSGGKTQYF              8              0

rowSums(foo==8)>0查找至少foo==8一个元素为TRUE任何行。 colSums(foo==8)>0对每一列都执行相同的操作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM