【问题标题】:Filter matrix in R according to difference between maximum and minimum values in rows根据行中最大值和最小值之间的差异过滤R中的矩阵
【发布时间】: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

【问题讨论】:

    标签: r matrix filter max min


    【解决方案1】:

    您可以使用rangediff 获得最小值和最大值之间的差值,并选择大于 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
    

    对于更大的矩阵,您还可以使用来自matrixStatsrowRanges 函数。

    mat <- matrixStats::rowRanges(A)
    A[mat[, 2] - mat[, 1] > 2, ]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-05-04
      • 2017-03-04
      • 2012-10-09
      • 2011-10-27
      • 2020-04-30
      • 2018-10-09
      • 1970-01-01
      相关资源
      最近更新 更多