特定の特定の要素をゼロにしたいマトリックスがあります。
たとえば、私の行列が次のようになっているとします。
m <- matrix(1:100, ncol=10)
次に、保持する要素を示す 2 つのベクトルがあります。
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 の正しいインデックスにアクセスするにはどうすればよいですか?