私は以下のような行列を持っていますが、より大きいです。Rでの適用を使用して行列をペアリストに変換します。
vec <- c(0, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0)
M <- matrix(vec, nrow = 4, byrow = TRUE)
colnames(M) <- rownames(M) <- LETTERS[1:4]
A, B, C, D
A, 0, 1, 1, 0
B, 0, 0, 1, 1
C, 1, 0, 0, 0
D, 0, 1, 1, 0
最終的に、私は、マトリックスまたは行の呼び出しは値を持っているたびに、私はrowname、列名のペアで終わるdata.frameを希望します。したがって、上記の行列を考えると、私は以下の行列またはデータフレームで終わる:
A,B
A,C
B,C
B,D
C,A
D,B
D,C
私はループとし、expand.gridでこれを行うことができますが、これは私が行うことができるはず何かのように思えます関数を適用します。例えば、私はこのようにそこの部分の方法を取得することができます:それは簡単である場合
tmp <- apply(M, 1, function(x) colnames(M)[which(x > 0)])
くれ
$A
[1] "B" "C"
$B
[1] "C" "D"
$C
[1] "A"
$D
[1] "B" "C"
を与える、私はまた、セル内の数字を含めることができます(0を超える細胞について) 3番目の列として?