循环遍历 R 中的矩阵

Onu*_*nur 1 loops r matrix

我尝试循环遍历矩阵,但无法找到一种简单而优雅的方法,而不是编写许多(> 10)个方程......任何人都可以帮助我吗?

我的矩阵看起来像这样:

在此输入图像描述

我想计算以下内容:

(0 * 0 * 4/24) + (0 * 1 * 6/24) + (0 * 2 * 3/24) + (1 * 0 * 3/24) + (1 * 1 * 4/24) + (1 * 2 * 4/24)

而不是使用

__ 顺便说一句:我的矩阵代码

vals<- c(4/24, 6/24, 3/24, 3/24, 4/24, 4/24)
x <- c(0,1)
y <- c(0,1,2)
df <- matrix(vals, byrow = TRUE, nrow = 2, ncol = 3,
             dimnames = list(x,y))
Run Code Online (Sandbox Code Playgroud)

我认为应该有一个for循环方法,而不是手动计算每个步骤,但无法弄清楚..

Pau*_*ulS 6

一个可能的解决方案:

c(x %*% df %*% y) 

#> [1] 0.5
Run Code Online (Sandbox Code Playgroud)

另一种可能的解决方案基于outer

sum(outer(x, y, Vectorize(\(x,y) x*y*df[x+1,y+1])))

#> [1] 0.5
Run Code Online (Sandbox Code Playgroud)

  • `c(x %*% df %*% y)` 似乎是最快的答案。不过,另一个是迄今为止最慢的^^ (2认同)