2017-11-13 18 views
0

私は定義済みの行列M = matrix(0,5,4)を持っています。私は値0から適切な値にデータフレーム(行列の行要素)とdf$colB = y(行列の列要素)のデータフレームdfオブジェクトの値を更新したいと思います。私はそれぞれの一意のcolAとcolBの値で行の名前とcol名を設定しました。 ColAおよびColBの値は、規則的な配列値を取る代わりに離散的な整数です。適用を使用して行列を更新

M =マトリックス(0,5,4) rownames(M)= Cの(135,138,145,146,151) COLNAMES(M)= Cの(192204206207)

192 204 206 207 
135 0 0 0 0 
138 0 0 0 0 
145 0 0 0 0 
146 0 0 0 0 
151 0 0 0 0 

df-> ColA ColB ColC 
135 192 1 
135 204 1 
135 206 -1 
138 192 -1 
138 206 1 
138 207 1 
145 192 -1 
145 204 -1 
145 206 -1 
145 207 1 
146 206 1 
146 207 1 
151 192 -1 
151 207 1 
for (r in rownames(M)) { 
    for (c in colnames(M)) { 
    tmp = df[(df$colA == c & df$colB==r),]$colC 
    if (!(length(tmp) == 0)) { 
     M[(rownames(M) == r),(colnames(M) == c)]= tmp 
    } 
    } 
} 

代わりのループに使用これは、カスタム関数を使用してmatric updationパーツを処理するapply関数またはouter関数で実現できるかどうか疑問です。これを達成する方法を手伝ってください。

私はこのリンクを参照しようとしていましたが、運はありません。

+1

[example input](https://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example)と予想される出力を入力してください。 – zx8754

+0

したがって、行と列のインデックスと値を持つdata.frameがありますか?それをマトリックスに再構成したいのですか? – Roland

+0

私は例のデータセットを提供しましたが、マトリックス要素を1または-1で更新したいのですが、データフレームに一致するcol値を持っていますが、そうでない場合は0の初期値を残してください。 – mbansal

答えて

-1

マトリックスを変更するには、apply()機能を使用できます。コードは次のようになります。

あなたが望む機能や簡単な例を書いたら、より良いヘルプを提供します。

+0

同時にマトリックス。 1または2を渡す代わりに、それらを一緒にc(1,2)として渡すこともできます。だから、apply(M、c(1,2)、my_func)のようなものを試してみましたが、運がなく、パラメータを適切に渡すことができないか、関数のパラメータを定義できません。これについて助けが必要です。 – mbansal

関連する問題