2016-10-25 2 views
0

これらの行列はすべて行と列の数が同じであり、それらのdimanamesも同じです。私は、例えば、次のようにループ内の別々の行列を使用してデータフレームに結果を保存する

a<-read.csv("a.txt",row.names = 1,header=T,sep="\t") 
b<-read.csv("b.txt",row.names = 1,header=T,sep="\t") 
c<-read.csv("c.txt",row.names = 1,header=T,sep="\t") 
d<-read.csv("d.txt",row.names = 1,header=T,sep="\t") 
e<-read.csv("e.txt",row.names = 1,header=T,sep="\t") 

をそれらを読んで今、私は& B、& C、間の類似性インデックスを取得したい...、& C B、...、& D C、D & Eそれから私は、例えば、このようなデータフレームとして結果を保存するこのコード

library(igraph) 
library(BiRewire) 

jaccard.index<-birewire.similarity(a,b) 

を使用して

mat1 mat2 simil.index 
a b 0.9142 
a c 0.8126 
a d 0.5066 
b e 0.9526 

これらの別々の行列をループで使用し、そのような結果を保存するにはどうすればよいかわかりません。誰でもこの問題について助けてくれますか?

答えて

1

ペアごとの類似点

myfun <- function(x, y) { 

    birewire.similarity(eval(parse(text = x)), eval(parse(text = y))) 

} 

(あなたの行列は、アルファベットの最初の5つの文字として指定されていると述べていますが、letters[1:5]の代わりに任意の名前を置くことができる)可能な組み合わせを構築を計算する関数を準備します。

myletters <- combn(letters[1:5], 2) 

ビルドカラムによる結合データフレームの組み合わせと、そのような組み合わせに適用される関数の結果:

data.frame(t(myletters), 
      simil.index = mapply(myfun, myletters[1,], myletters[2,])) 
+0

これは素晴らしかったです。本当にありがとうございました@Davide Passaretti – minoo

関連する問題