进出R中的for循环 - 计算矩阵的对角积

use*_*667 1 for-loop r matrix

我试图在20x20矩阵中找到2位数的最大对角线乘积.

这会给出一条错误消息:

i <- 17:1
z <- for (j in 1:(18-i))
        {b <- max ((x[i,j]*x[i+1,j+1]*x[i+2,j+2]*x[i+3,j+3]))}}
Run Code Online (Sandbox Code Playgroud)

但这不是:

z <- for (i <- 17:1)
{for (j in 1:(18-i))
        {b <- max ((x[i,j]*x[i+1,j+1]*x[i+2,j+2]*x[i+3,j+3]))}}
Run Code Online (Sandbox Code Playgroud)

但第二个版本给了我一个太小的数字.为什么第一个不起作用,我认为它会产生正确的答案,但我不明白错误信息.

Dir*_*tel 6

这看起来不错.

您不能将for循环结果分配给变量.并且max()是一个无意义的标量变量.最后,x未指定矩阵.我会用更小的东西重试,甚至可能会打印一些临时结果来进行筛选.

跑步之前还是很好的建议.之后您仍然可以为sprint解决方案进行矢量化.