根据行中最大值和最小值之间的差异过滤R中的矩阵
Filter matrix in R according to difference between maximum and minimum values in rows
我有一个像这样的矩阵A:
1 2 3 4 5
2 3 6 4 3
3 3 3 3 4
2 3 3 3 4
我只想获取一行中最大值和最小值之差大于2的行。
函数应该return这个矩阵:
1 2 3 4 5
2 3 6 4 3
您可以在 range
和 diff
以及 select 行中获取大于 2 的最小值和最大值之间的差异。
A[apply(A, 1, function(x) diff(range(x))) > 2, ]
# [,1] [,2] [,3] [,4] [,5]
#[1,] 1 2 3 4 5
#[2,] 2 3 6 4 3
对于较大的矩阵,您还可以使用 matrixStats
中的 rowRanges
函数。
mat <- matrixStats::rowRanges(A)
A[mat[, 2] - mat[, 1] > 2, ]
我有一个像这样的矩阵A:
1 2 3 4 5
2 3 6 4 3
3 3 3 3 4
2 3 3 3 4
我只想获取一行中最大值和最小值之差大于2的行。
函数应该return这个矩阵:
1 2 3 4 5
2 3 6 4 3
您可以在 range
和 diff
以及 select 行中获取大于 2 的最小值和最大值之间的差异。
A[apply(A, 1, function(x) diff(range(x))) > 2, ]
# [,1] [,2] [,3] [,4] [,5]
#[1,] 1 2 3 4 5
#[2,] 2 3 6 4 3
对于较大的矩阵,您还可以使用 matrixStats
中的 rowRanges
函数。
mat <- matrixStats::rowRanges(A)
A[mat[, 2] - mat[, 1] > 2, ]