【发布时间】:2021-03-14 05:14:17
【问题描述】:
我有一个矩阵 A 像:
1 2 3 4 5
2 3 6 4 3
3 3 3 3 4
2 3 3 3 4
我只想获取一行中最大值和最小值之差大于 2 的行。
函数应该返回这个矩阵:
1 2 3 4 5
2 3 6 4 3
【问题讨论】:
我有一个矩阵 A 像:
1 2 3 4 5
2 3 6 4 3
3 3 3 3 4
2 3 3 3 4
我只想获取一行中最大值和最小值之差大于 2 的行。
函数应该返回这个矩阵:
1 2 3 4 5
2 3 6 4 3
【问题讨论】:
您可以使用range 和diff 获得最小值和最大值之间的差值,并选择大于 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, ]
【讨论】: