【问题标题】:is it possible to multiply two vectors or matrix with vector in the following way in R?是否可以在R中以下列方式将两个向量或矩阵与向量相乘?
【发布时间】:2018-05-03 17:18:12
【问题描述】:
A = 1:5
B = 11:15

我知道A %*% B 会给,AB = [205] i.e. 1*11+2*12+3*13+4*14+5*15 =205
但是,我希望 AB 成为(如果可能,不通过循环)= (1*11)^2+(2*12)^2+(3*13)^2+(4*14)+(5*15)^2=10979

跟进:这解决了@Dason 和@nicola 建议的上述问题sum((A*B)^2)

如果 A 是矩阵,即A =matrix(1:10,2,5),现在需要做什么 在玩了之后我发现这个作品:rowSums((A %*% diag(B))^2)

【问题讨论】:

  • 可能是sum((A*B)^2)?
  • 附带说明...您用来写出数据的符号显然不是 R。如果您要问 R 问题,您应该努力做到这一点在 R 中很容易重现。
  • 同意。我通常在提问时这样做,但我错过了这个问题的那部分。
  • 而且您现在仍然可以修改问题,以便以后其他人受益。 reprex 包可能有助于您轻松准备可重现的示例:reprex.tidyverse.org

标签: r vector sum matrix-multiplication


【解决方案1】:

虽然没有直接执行此操作的运算符/函数,但很容易将几个链接在一起以获得您想要的内容而无需循环。

sum((A*B)^2)

【讨论】:

  • 如果 A 是矩阵,即 A =matrix(1:10,2,5) @Dason,需要更改的内容
  • 这取决于 B 的实际外观以及您希望在这种情况下发生什么。您的问题没有详细说明在 A 和 B 大小不同的情况下如何扩展。
  • B 是一个权重向量,并且在我需要将 A 扩展为 n × 5 矩阵 @Dason 时始终相同
  • @user2797174 仍然不是所需的完整信息。但老实说,只是玩弄它。尝试A*BA*t(B) 的不同组合,看看哪个能给出正确的乘法。然后你可以像我在我的答案中那样进行平方和求和。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-29
相关资源
最近更新 更多