首页 > 解决方案 > 如何在 R 中计算这个总和?

问题描述

如果我们有一个数据集,其中 $x_{ij}$ 的大小为 4 x 3 矩阵,i=1,2,3,4 并且 j=1,2,3。y_i 是一个向量,而 z_{ij} 也是一个 4 x 3 矩阵。

  a1=c(1,0,1, 2)
  a2=c(2,2,1, 2)
  a3=c(1,3,2,3)
  a4=c(-1,0,-1,-1)
  x <- cbind(a1, a2, a3)
  y <- c(1,2,3,2)
  z<-cbind(a2, a3,a4)

标签: r

解决方案


我认为这会做到:

z1 <- z[1, ]
vapply(
  seq_along(z1), function(j) 
    drop((y - x[, -j] %*% z1[-j])) %*% x[, j], 
  numeric(1))
#R> [1]  10  15 -15

一个 for 循环版本是:

out <- numeric(3)
for(j in 1:3)
  for(i in 1:4){
    f1 <- y[i]
    for(k in setdiff(1:3, j))
      f1 <- f1 - x[i, k] * z[1, k]
    out[j] <- out[j] + f1 * x[i, j]
  }
out
#R> [1]  10  15 -15

推荐阅读