在列表中的矩阵列中查找最大值
Finding maximum value in columns of matrices within a list
我有一个包含十个 5x5 矩阵的列表,我想获得每个矩阵中每一列的最大值。我的列表示例如下:
My List:
[[1]]
A B C D E
[1,] 30 40 60 12 7
[2,] 14 30 50 25 2
[3,] 53 1 50 54 50
[4,] 61 200 50 33 7
[5,] 73 88 50 33 8
.....
[[10]]
A B C D E
[1,] 2 40 60 6 7
[2,] 6 30 2 25 2
[3,] 9 1 40 54 50
[4,] 55 2 80 1 100
[5,] 20 88 1 200 8
我需要的结果是:
我的列表在每个矩阵的每一列显示最大值,结果列表将有十个 1x5 矩阵:
[[1]]
A B C D E
[1,] 73 200 60 54 50
.....
[[10]]
A B C D E
[1,] 55 88 80 200 100
我使用了 apply 但我知道我缺少一些东西来告诉它遍历每个矩阵的每一列..
apply(My List, 2, max, na.rm = TRUE)
我收到的错误信息是:
dim(X) must have a positive length
我们需要 lapply
和 apply
,即用 lapply
遍历 list
,然后遍历 [=] 的列 (MARGIN = 2
) 19=] 在每个 list
和 apply
lapply(MyList, function(x) apply(x, MARGIN = 2,
FUN = max, na.rm = TRUE))
-输出
[[1]]
A B C D E
73 200 60 54 50
[[2]]
A B C D E
55 88 80 100 100
或使用 colMaxs
来自 matrixStats
library(matrixStats)
lapply(MyList, colMaxs, na.rm = TRUE)
[[1]]
[1] 73 200 60 54 50
[[2]]
[1] 55 88 80 100 100
数据
MyList <- list(structure(c(30, 14, 53, 61, 73, 40, 30, 1, 200, 88, 60,
50, 50, 50, 50, 12, 25, 54, 33, 33, 7, 2, 50, 7, 8), .Dim = c(5L,
5L), .Dimnames = list(NULL, c("A", "B", "C", "D", "E"))), structure(c(2,
6, 9, 55, 20, 40, 30, 1, 2, 88, 60, 2, 40, 80, 1, 6, 25, 54,
1, 100, 7, 2, 50, 100, 8), .Dim = c(5L, 5L), .Dimnames = list(
NULL, c("A", "B", "C", "D", "E"))))
我有一个包含十个 5x5 矩阵的列表,我想获得每个矩阵中每一列的最大值。我的列表示例如下:
My List:
[[1]]
A B C D E
[1,] 30 40 60 12 7
[2,] 14 30 50 25 2
[3,] 53 1 50 54 50
[4,] 61 200 50 33 7
[5,] 73 88 50 33 8
.....
[[10]]
A B C D E
[1,] 2 40 60 6 7
[2,] 6 30 2 25 2
[3,] 9 1 40 54 50
[4,] 55 2 80 1 100
[5,] 20 88 1 200 8
我需要的结果是: 我的列表在每个矩阵的每一列显示最大值,结果列表将有十个 1x5 矩阵:
[[1]]
A B C D E
[1,] 73 200 60 54 50
.....
[[10]]
A B C D E
[1,] 55 88 80 200 100
我使用了 apply 但我知道我缺少一些东西来告诉它遍历每个矩阵的每一列..
apply(My List, 2, max, na.rm = TRUE)
我收到的错误信息是:
dim(X) must have a positive length
我们需要 lapply
和 apply
,即用 lapply
遍历 list
,然后遍历 [=] 的列 (MARGIN = 2
) 19=] 在每个 list
和 apply
lapply(MyList, function(x) apply(x, MARGIN = 2,
FUN = max, na.rm = TRUE))
-输出
[[1]]
A B C D E
73 200 60 54 50
[[2]]
A B C D E
55 88 80 100 100
或使用 colMaxs
来自 matrixStats
library(matrixStats)
lapply(MyList, colMaxs, na.rm = TRUE)
[[1]]
[1] 73 200 60 54 50
[[2]]
[1] 55 88 80 100 100
数据
MyList <- list(structure(c(30, 14, 53, 61, 73, 40, 30, 1, 200, 88, 60,
50, 50, 50, 50, 12, 25, 54, 33, 33, 7, 2, 50, 7, 8), .Dim = c(5L,
5L), .Dimnames = list(NULL, c("A", "B", "C", "D", "E"))), structure(c(2,
6, 9, 55, 20, 40, 30, 1, 2, 88, 60, 2, 40, 80, 1, 6, 25, 54,
1, 100, 7, 2, 50, 100, 8), .Dim = c(5L, 5L), .Dimnames = list(
NULL, c("A", "B", "C", "D", "E"))))