リストを生成するコードは次のとおりです。
x = matrix(1, 4, 4)
x[2,2] = 5
x[2:3, 1] = 3
x
# [,1] [,2] [,3] [,4]
#[1,] 1 1 1 1
#[2,] 3 5 1 1
#[3,] 3 1 1 1
#[4,] 1 1 1 1
res = apply(x, 2, function(i) list(m=max(i), idx=which(i == max(i))))
res
#[[1]]
#[[1]]$m
#[1] 3
#
#[[1]]$idx
#[1] 2 3
#
#
#[[2]]
#[[2]]$m
#[1] 5
#
#[[2]]$idx
#[1] 2
#
#
#[[3]]
#[[3]]$m
#[1] 1
#
#[[3]]$idx
#[1] 1 2 3 4
#
#
#[[4]]
#[[4]]$m
#[1] 1
#
#[[4]]$idx
#[1] 1 2 3 4
今、各サブリストの $m を比較し、マトリックス内の最大値とそのインデックスを取得したいのですが、この方法で行うことができます
mvector = vector('numeric', 4)
for (i in 1:4) {
mvector[i] = res[[i]]$m
}
mvector
#[1] 3 5 1 1
max_m = max(mvector)
max_m
#[1] 5
max_col = which(mvector == max_m)
max_row = res[[max_col]]$idx
max_row
#[1] 2
x[max_row, max_col]
#[1] 5
これを行う簡単な方法があるかどうか疑問に思っていますか?