r - 对所有列应用乘法,但仅对具有正值的行应用乘法

标签 r matrix

我有以下矩阵:

 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/

相关文章:

r - 理解 c( ) 对命名向量的影响

R-Package tmap/protolite 安装失败 :

c++ - 如何设计:矩阵的线性代数例程

矩阵和数据框之间的逐行差异

algorithm - 如何最佳地将元素放置在矩阵中,以便与其他元素的距离最小?

r - 如何使用 R 和 XLConnect 保存 XLSX 电子表格而不在单元格中换行?

r 使用 paste 或 paste0 时保持 0.0

类似于R的C概率库

R:使用 xtabs 创建对称矩阵

python - 使用 numpy 数组通过索引加速获取边缘矩阵