如何将每列乘以R中的每个标量?

use*_*121 2 r

我有以下变量 Q

a = c(1,2,3,4)
b = c(45,4,3,2)
c = c(34,23,12,45)
Q = cbind(a,b,c)
Run Code Online (Sandbox Code Playgroud)

我还有另一个变量 r

r = c(10,20,30)
Run Code Online (Sandbox Code Playgroud)

我想将每个列乘以每个Q相应的值r(例如,第一列Q乘以第一个值r,第二列Q乘以第二个值r,依此类推).

特别是对于这个例子,我正在寻找的输出是:

      10   900   1020
      20    80    690
      30    60    360
      40    40   1350
Run Code Online (Sandbox Code Playgroud)

我是R的新手,正在寻找最佳的方法.

G. *_*eck 7

试试这个:

Q %*% diag(r)
Run Code Online (Sandbox Code Playgroud)

赠送:

     [,1] [,2] [,3]
[1,]   10  900 1020
[2,]   20   80  690
[3,]   30   60  360
[4,]   40   40 1350
Run Code Online (Sandbox Code Playgroud)

或任何这些:

t(t(Q) * r)

Q * r[col(Q)]

sweep(Q, 2, r, "*")

Q * rep(r, each = nrow(Q))

mapply("*", as.data.frame(Q), r)
Run Code Online (Sandbox Code Playgroud)

除了使用除法之外,请参阅此答案:如何使用 R中的向量元素划分矩阵的每一行