【问题标题】:Matrix multiplication R矩阵乘法 R
【发布时间】:2016-01-15 09:51:36
【问题描述】:

我有一个简单的问题:我有这两个矩阵

矩阵 Y(264 行 4 列)

      [,1]      [,2]       [,3]        [,4]
1751 -1.745529 0.3692280 0.04607022 -0.07004973
1752 -1.532722 0.5642921 0.07477571  0.03380135  
1753 -1.657636 0.4660229 0.05772685 -0.03314599
1754 -1.685309 0.4540047 0.08254891 -0.01623810
1755 -1.702469 0.4483389 0.10709689 -0.03936556
1756 -1.761332 0.4505378 0.04801420 -0.06385137

矩阵 E(4x4,元素 e)

       [,1]       [,2]        [,3]        [,4]
[1,] -0.8769976 -0.4706054 -0.07186508  0.06512449
[2,] -0.4085563  0.8198519 -0.40067903 -0.01951755
[3,]  0.2190770 -0.3206892 -0.86394973 -0.32055350
[4,] -0.1263415  0.0594299  0.29644997 -0.94478745

我想对每年 b(t)=∑(e[1,i]∙Y[,i]) 执行此操作,其中 i 从 1 到 4。

这是我应该得到的(一个 264x4 矩阵),这是我使用的代码

betaNew1<-(Y[,1]%*%t(P[1,1]))
betaNew2<-(Y[,2]%*%t(P[1,2]))
betaNew3<-(Y[,3]%*%t(P[1,3]))
betaNew4<-(Y[,3]%*%t(P[1,4]))
beta_t<-data.frame(betaNew1,betaNew2,betaNew3,betaNew4)

   betaNew1   betaNew2     betaNew3    betaNew4
1 1.530825 -0.1737607 -0.003310840  0.003000300
2 1.344193 -0.2655589 -0.005373763  0.004869730
3 1.453743 -0.2193129 -0.004148544  0.003759431
4 1.478012 -0.2136570 -0.005932384  0.005375955
5 1.493062 -0.2109907 -0.007696526  0.006974630
6 1.544684 -0.2120255 -0.003450544  0.003126900

如何避免使用 4 条指令?

【问题讨论】:

  • 开始here
  • 好的,谢谢。我知道如何使用矩阵乘积,但我正在尝试做一些不同的事情,比如:Y[,1]%*%t(P[1,1])。我不想重复这个指令四次: Y[,1]%*%t(P[1,1]),Y[,2]%*%t(P[1,2]),Y[ ,3]%*%t(P[1,3]),Y[,4]%*%t(P[1,4])
  • @akrun:我已经编辑过了。我认为这与其他问题不同
  • 预期输出中的这些值是否正确?
  • 不,只有第一列是正确的。在其他列中,我放置随机值只是为了显示它应该是怎样的。我正在尝试使用 for 循环 betaNew

标签: r matrix matrix-multiplication


【解决方案1】:

我们可以试试

res <- lapply(seq_len(nrow(P)), function(i) Y*P[i,][col(Y)])

【讨论】:

    猜你喜欢
    • 2023-04-06
    • 2012-05-27
    • 1970-01-01
    • 2020-01-17
    • 2021-01-31
    • 2018-01-03
    • 2012-04-01
    • 1970-01-01
    相关资源
    最近更新 更多