R中的标量乘法

3

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

在线性代数中,我会执行以下操作:

scalar multiplication

下面是我在R中实现这个操作的方法:

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

这种方法可以得到正确的输出,但是当涉及到更大的矩阵时,创建标量矩阵c会很麻烦。

有没有更好的方法?


@RomanLuštrik:完美而简单。如果您将此作为答案提交,我将非常乐意接受它。 - user4275591
1
R默认进行标量乘法。实际上,在R中进行矩阵乘法(非常奇怪地)更难。为此,您需要使用特殊运算符,例如“%*%”。 - David Arenburg
@DavidArenburg:感谢您提供的运算符信息。我可以这样说,*将对每个元素进行乘法运算,而%*%将进行正确的矩阵乘法运算吗? - user4275591
1
@ChuckD。是的,没错。 - David Arenburg
@DavidArenburg:太好了,再次感谢。 - user4275591
显示剩余2条评论
2个回答

12

R中默认是标量运算。要进行矩阵乘法,请使用%*%t是转置,solve将给出矩阵的逆。以下是一些示例:

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

这里有一个链接:R中的矩阵代数

。它涉及到IT技术方面的内容。


谢谢包含tsolve,我也会用得上它们。 - user4275591

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接