できるだけ早く、行列の一部の行の最初の0を別のベクトルに格納された値に置き換えます。行列の行の最初のゼロ要素を置き換えます。
各行がいくつかのゼロを持つベクトルである数値行列があります。 私には2つのベクトルがあり、1つは行を含み、1つは置き換えられるもので、もう1つは新しい値:replace.in.these.rows
とnew.values
です。
matrix[replace.in.these.rows, corresponding.poz.of.the.1st.zero ] <- new.values
を持つトリックはあります:また、私は今、私はインデックスベクトルの上にその反復する何かをしたいと思いますが、おそらくforループなしsapply
mat <- matrix(1,5,5)
mat[c(1,8,10,14,16,22,14)] <- 0
replace.in.these.rows <- c(1,2,3)
new.values <- c(91,92,93)
corresponding.poz.of.1st.zero <- sapply(replace.in.these.rows,
function(x) which(mat [x,] == 0)[1])
で最初のゼロのベクトルを生成することができます単純なベクトルよりも多くのインデックスを作成しますか?インデックスとしてリストや配列を(たとえば、列ごとに)使用することはできませんでした。
デフォルトでは、R個の行列は列ベクトルの集合です。転記された形式でデータを保存すると何かを得ることができますか?これは、行ではなく列で作業することを意味します。
コンテキスト:
この行列ストアは、ネットワークのID-Sに連絡してください。これは、隣接行列n x nではなく、n x max.number .ofpartners(またはn * = 30)行列ではありません。
ネットワークでは、デフォルトでedgelistが使用されていますが、「Xからのすべてのリンク」をまとめて保存したかったのです。
私は
これは常にedgelist(複数回のシミュレーションでは、各ラウンド)から情報を抽出するよりも効率的であるかどうかわから仮定ではなく、私はまた、この直線的に成長しているマトリックス形式が保存するよりも高速であると仮定同一のフォーマットされたリスト内の同じ情報。
これらの文脈上の前提に関する一部のコメントも歓迎します。
'行列[replace.in.these.rows + nrow(マトリックス)*(corresponding.poz.of.the.1st.zero-1)] < - new.values' – James