如何在多个样本之间进行交叉?
我根据基因名称,cc变化,坐标建立了29个连接列表。每个清单长400-800。我需要构建一个表格,显示所有812种组合在两个列表中共享的变体数量。有没有办法在R中做到这一点?
例如:如果我有4个列表。
A<-c("TSC22112517","SLC141T43309911","RAD51D33446609","WRN31024638")
B<-c("TSC22112517","SLC14A143309911","RHBDF274474996","WRN31024638")
C<-c("TSC22112517","SLC14A143309911","RAD51D33446609","MEN164575556")
D<-c("FANCM45665468","SLC14A143309911","RAD51D33446609","MEN164575556")
我只需要找到彼此之间有多少变体。
AB<-length(intersect(A,B))
给我A和B共享的#变种#3。 然后我可以得到一张如下表所示的共享变体#:
A B C D
A 4 3 2 2
B 3 4 3 2
C 2 3 4 2
D 2 2 2 4
如何为大量列表执行此操作? 我有29个列表,每个列表有600个变种。
答案 0 :(得分:0)
你可以尝试这样的事情:我在列表中做了很多事情......
#x is your data in list() format
shared<-list()
for (i in 1:29){
shared[[i]]<-list()
for (j in 1:29){
if (i != j){
shared[[i]][[j]]<-x[[i]][x[[i]][,2]==x[[j]][,2]]
}
}
}
答案 1 :(得分:0)
很高兴弄清楚
x<- list()
shared<-matrix(1:841,ncol=29)
temp<-NULL
for (i in 1:29){
for (j in 1:29){
temp[j] <- length(intersect(x[[i]][[1]],x[[j]][[1]]))
}
shared[,i] <- matrix(temp)
}
shared