在 R 中交叉多个数据集

Intersecting multiple datasets in R

如何在多个样本之间进行交叉?

我根据基因名称、cc 变化、坐标构建了 29 个连接列表。每个列表有 400-800 长。我需要构建一个 table 来显示所有 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。 然后我可以获得如下所示的 table 显示共享变体的数量:

    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 个变体。

你可以尝试这样的事情:我在列表中做很多事情...

#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]]
    }
  }
}

很高兴弄明白了

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