如何对矩阵进行复杂的循环运算
How to perform complex looping operation on matrix
我有一个样本矩阵
5 4 3
2 6 8
1 9 7
我想要像
这样的输出
max(5*6,5*8,5*9,5*7) // i!=j condition
max(4*2,4*8,4*1,4*7)
max(3*2,3*6,3*1,3*9)
等等...
这个计算得到的最大值应该是矩阵形式。我需要概括它,因此我需要一个通用代码。
这完成了工作,但这是一个非常缺乏想象力的解决方案,因为它只是循环遍历行和列来执行请求的计算,而不是执行任何矢量化操作。
sapply(1:ncol(m), function(j) sapply(1:nrow(m), function(i) max(m[i,j]*m[-i,-j])))
# [,1] [,2] [,3]
# [1,] 45 32 27
# [2,] 18 42 72
# [3,] 8 72 42
数据:
(m <- matrix(c(5, 2, 1, 4, 6, 9, 3, 8, 7), nrow=3))
# [,1] [,2] [,3]
# [1,] 5 4 3
# [2,] 2 6 8
# [3,] 1 9 7
我有一个样本矩阵
5 4 3
2 6 8
1 9 7
我想要像
这样的输出max(5*6,5*8,5*9,5*7) // i!=j condition
max(4*2,4*8,4*1,4*7)
max(3*2,3*6,3*1,3*9)
等等...
这个计算得到的最大值应该是矩阵形式。我需要概括它,因此我需要一个通用代码。
这完成了工作,但这是一个非常缺乏想象力的解决方案,因为它只是循环遍历行和列来执行请求的计算,而不是执行任何矢量化操作。
sapply(1:ncol(m), function(j) sapply(1:nrow(m), function(i) max(m[i,j]*m[-i,-j])))
# [,1] [,2] [,3]
# [1,] 45 32 27
# [2,] 18 42 72
# [3,] 8 72 42
数据:
(m <- matrix(c(5, 2, 1, 4, 6, 9, 3, 8, 7), nrow=3))
# [,1] [,2] [,3]
# [1,] 5 4 3
# [2,] 2 6 8
# [3,] 1 9 7