bipartite
パッケージで使用する隣接行列を作成しています。各行および列は、2つの異なるクラスのエンティティを表し、m[i,j]
は、第1クラスのエンティティi
と第2クラスのエンティティとの相互作用を表す。私は現在、例えば、行2はs1
の部材188と重量4のs2
259との間の相互作用を表す行列の行と列の名前を数値に変更する
s1 s2 weight
1 261 446 1
2 188 259 4
3 144 1119 1
だからm[259,188]
ではないので、しかし4でなければならない形式のデータフレームdf
を有します1からmax(df$s1, df$s2)
までのすべての値が表示されますが、通常のインデックスを使用すると動作しません。私は文字ベクトルに列と行の名前を変更することができます知っているが、私はそれがas.character(unique(df$s1))
に設定(とと同様に扱いにくい/非効率的だと思う
[,144] [,188] [,261]
[259,] 0 4 0
[446,] 0 0 1
[1119,] 1 0 0
:それは可能であったならば、私はこのような何かをしたいと思いますs2
の場合)、そのようにインデックスを作成します。私はまた、s1
とs2
のユニークな要素のベクトルを保持することを検討しました。 m[which(unique.s2 == i), which(unique.s1 == j)]
しかし、それは次善の解決策のように思えます。 min(s1)とmax(s1)の間のすべての数値が行列になるわけではないので、単に次元c(max(s1)、max(s2))を作成してインデックスを直接使用することはできません。
私の目標を達成する良い方法はありますか?
あなたはスパース行列のようなものを記述します。私は彼らがRに存在するはずだと思います。 – DrDom