【问题标题】:Scalar Multiplication in RR中的标量乘法
【发布时间】:2015-01-21 06:13:17
【问题描述】:

我正在尝试在 R 中执行简单的标量乘法,但遇到了一些问题。

在线性代数中,我会做以下事情:

这是我在 R 中的实现方式:

A <- matrix(1:4, 2, byrow = TRUE)
c <- matrix(rep(3, 4), 2)
A * c

这会产生正确的输出,但是当涉及到更大的矩阵时,创建标量矩阵 c 会很麻烦。

有没有更好的方法来做到这一点?

【问题讨论】:

  • @RomanLuštrik:完美而简单。如果您将此作为答案提交,我会很乐意接受。
  • R 默认做标量乘法。在 R 中进行矩阵乘法实际上(非常奇怪)更难。为此,您需要一个特殊的运算符,例如 %*%
  • @DavidArenburg:感谢运营商的提醒。我是否正确地说* 将进行元素乘法,%*% 将进行正确的矩阵乘法?
  • @ChuckD。是的,没错
  • @DavidArenburg:完美,再次感谢。

标签: r matrix


【解决方案1】:

R 中,默认值为标量。对于矩阵乘法,使用%*%t 是转置,solve 会给你相反的结果。下面是一些例子:

a = matrix(1:4,2,2)
3 * a
c(1:2) %*% a
c(1:2) %*% t(a)
solve(a)

这是一个链接:matrix algebra in R

【讨论】:

  • 感谢您提供tsolve,我也会从中得到一些用处。
【解决方案2】:

使用函数drop() 将1x1 变量矩阵转换为“实数”标量。所以你可以写drop(c)*A,你不需要用值本身替换c

【讨论】:

    猜你喜欢
    • 2018-05-06
    • 2020-03-16
    • 2021-04-19
    • 2013-12-11
    • 1970-01-01
    • 2014-11-24
    • 1970-01-01
    • 1970-01-01
    • 2020-01-17
    相关资源
    最近更新 更多