在循环中使用单独的矩阵并将结果保存在数据框中
using separate matrices in a loop and saving the results in a data frame
我有几个矩阵,它们的行数和列数都相同,而且它们的维度名称也完全相同。例如我是这样读的
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")
现在我想获得 a & b, a & c,...,b & c, ..., c & d, 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
我不知道如何在循环中使用这些单独的矩阵并像那样保存结果。有人帮我解决这个问题吗?
准备计算成对相似度的函数
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,]))
我有几个矩阵,它们的行数和列数都相同,而且它们的维度名称也完全相同。例如我是这样读的
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")
现在我想获得 a & b, a & c,...,b & c, ..., c & d, 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
我不知道如何在循环中使用这些单独的矩阵并像那样保存结果。有人帮我解决这个问题吗?
准备计算成对相似度的函数
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,]))