我有一个矩阵,我想在其中将某些特定元素归零。
例如,假设我的矩阵是:
m <- matrix(1:100, ncol=10)
然后我有两个向量指示要保留哪些元素
m.from <- c(2, 5, 4, 4, 6, 3, 1, 4, 2, 5)
m.to <- c(7, 9, 6, 8, 9, 5, 6, 8, 4, 8)
因此,例如,我将在第 1 行中保留元素 3:6,并将元素 1:2 和 7:10 设置为 0。对于第 2 行,我将保留 6:8 并将其余元素设为零,依此类推。
现在,我可以轻松做到:
for (line in 1:nrow(m))
{
m[line, 1:m.from[line]] <- 0
m[line, m.to[line]:ncol(m)] <- 0
}
这给出了正确的结果。
然而,在我的具体情况下,我在一个 ~15000 x 3000 矩阵上运行,这使得使用这种循环的时间非常长。
如何加快此代码的速度?我虽然使用apply
,但是如何访问 m.from 和 m.to 的正确索引?