我有以下变量 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的新手,正在寻找最佳的方法.
试试这个:
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中的向量元素划分矩阵的每一行