我有以下矩阵:
m <- as.matrix(data.frame(a = c(-1,2,3,4),
b = c(-1,2,2,-4),
c = c(-1,3,1,-2)))
我想将每一列与向量 v 中的相应值相乘,向量 v 的长度与 m 中的列数相同。我只想将该乘法应用于该列中的正值。
v <- c(2,3,-3)
使得 a 列变为 (-1,4,6,8)
我的数据集很大,所以我正在寻找一个优雅的解决方案
最佳答案
to_upd <- which(m>0)
m[to_upd] <- (m * v[col(m)])[to_upd]
m
# a b c
# [1,] -1 -1 -1
# [2,] 4 6 -9
# [3,] 6 6 -3
# [4,] 8 -4 -2
数据
v <- c(2,3,-3)
m <- cbind(
a = c(-1,2,3,4),
b = c(-1,2,2,-4),
c = c(-1,3,1,-2)
)
关于r - 对所有列应用乘法,但仅对具有正值的行应用乘法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64443025/