代码之家  ›  专栏  ›  技术社区  ›  Tian

如何获得矩阵列表中每个元素的百分比

  •  0
  • Tian  · 技术社区  · 7 年前

    如果我有一个维度相同的矩阵列表,我如何得到R中矩阵列表的每个元素?例如,我有4个矩阵:

    > a
               [,1]       [,2]       [,3]
    [1,] -0.8761453  0.2821336 -0.8541406
    [2,] -0.9649200  1.7734091 -1.2058440
    [3,] -0.4250063 -0.8197162 -1.3997540
    > b
               [,1]       [,2]       [,3]
    [1,] -1.2096577 -0.5440074  0.6102016
    [2,] -0.1299645 -0.8943189 -1.8042720
    [3,]  1.0111488  0.2547343  0.2395172
    > c
               [,1]       [,2]       [,3]
    [1,]  0.2853833 -0.2716714  0.2330467
    [2,] -0.7963095 -1.2120779  0.6909755
    [3,]  0.3479346  0.1803124 -0.7400176
    > d
                 [,1]       [,2]       [,3]
    [1,] -1.048740842 -1.0492152 -0.6889409
    [2,] -0.004154795 -0.6167335 -0.8028550
    [3,] -1.111915258 -2.1586534 -0.1448612
    

    我想要的结果是,如果我想要每个元素的第二个最小值。

    > res
               [,1]       [,2]       [,3]
    [1,] -1.0487408 -0.5440074 -0.6889409
    [2,] -0.7963095 -0.8943189 -1.2058440
    [3,] -0.4250063 -0.8197162 -0.7400176
    
    1 回复  |  直到 7 年前
        1
  •  2
  •   akrun    7 年前

    如果需要第二个最小值,请创建一个 array 通过连接 matrix 一起指定尺寸和用途 apply 具有所需的 MARGIN sort 从最小到最大的元素,得到第二个元素

    apply(array(c(a, b, c, d), c(dim(a), 4)), c(1, 2), FUN = function(x) sort(x)[2])
    #           [,1]       [,2]       [,3]
    #[1,] -1.0487408 -0.5440074 -0.6889409
    #[2,] -0.7963095 -0.8943189 -1.2058440
    #[3,] -0.4250063 -0.8197162 -0.7400176
    

    注意:根据OP的帖子,看起来“a”、“b”、“c”、“d”是分开的 矩阵 全局环境中的对象