基于单元格值的子集矩阵
subset matrix based on cell values
这应该很简单,但我想不通:
我有一个方阵,每个单元格中都有整数值(所有与所有距离计算的结果)。我想根据单元格值对矩阵进行子集化,例如cell == 8 或 cell <= 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
输出:
结构(c(0, 999, 999, 8, 999, 999, 0, 999, 999, 999, 999,
999, 0, 999, 6, 8, 999, 999, 0, 999, 999, 999, 6, 999, 0), .Dim = c(5L,
5L), .Dimnames = list(c("CASSLLAGAPEQFF", "CASSQVGLATGTQYF",
"CASSSGTQYTQYF", "CASRITSGGKTQYF", "CATSDSRGKTQYF"), c("CASSLLAGAPEQFF",
"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
对每一列执行相同的操作。
这应该很简单,但我想不通:
我有一个方阵,每个单元格中都有整数值(所有与所有距离计算的结果)。我想根据单元格值对矩阵进行子集化,例如cell == 8 或 cell <= 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
输出:
结构(c(0, 999, 999, 8, 999, 999, 0, 999, 999, 999, 999, 999, 0, 999, 6, 8, 999, 999, 0, 999, 999, 999, 6, 999, 0), .Dim = c(5L, 5L), .Dimnames = list(c("CASSLLAGAPEQFF", "CASSQVGLATGTQYF", "CASSSGTQYTQYF", "CASRITSGGKTQYF", "CATSDSRGKTQYF"), c("CASSLLAGAPEQFF", "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
对每一列执行相同的操作。