我有一个矩阵,我想在其中将某些特定元素归零。在R中访问一定范围的矩阵元素
举例来说,假设我的矩阵是:
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)
哪些元素所以,例如我会继续元件3:6行1,并将元素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的正确索引?
我没有想到它通过完全,但我不知道一个快速的解决方案可能是通过附加'm.from'和'm.to'作为矩阵的附加列。然后,一个“应用”解决方案将是微不足道的,你甚至可以矢量化它。 – joran