根据行中最大值和最小值之间的差异过滤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

您可以在 rangediff 以及 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, ]