R:在不同对象之间进行所有成对比较

R:在不同对象之间进行所有成对比较,r,R,我不确定从哪里开始,我可以使用一些指针。 我有几个对象是包含基因名称的不同长度的字符串。我想两两比较所有对象,并获得每对列表之间共享基因的数量(例如使用intersect())。我想将所有成对比较存储在矩阵中,以制作热图。 但我不确定如何最好地进行比较,以及如何存储结果。我应该首先将所有对象分组到一个数据帧中吗 我有24个对象称为名称\u某物: > length(names_G63) [1] 4518 > head(names_G63) [1] "SARC_00002" "SARC_

我不确定从哪里开始,我可以使用一些指针。
我有几个对象是包含基因名称的不同长度的字符串。我想两两比较所有对象,并获得每对列表之间共享基因的数量(例如使用
intersect()
)。我想将所有成对比较存储在矩阵中,以制作热图。
但我不确定如何最好地进行比较,以及如何存储结果。我应该首先将所有对象分组到一个数据帧中吗

我有24个对象称为
名称\u某物

> length(names_G63)
[1] 4518
> head(names_G63)
[1] "SARC_00002" "SARC_00004" "SARC_00005" "SARC_00012" "SARC_00022" "SARC_00025"
> length(names_C28)
[1] 9190
> head(names_C28)
[1] "SARC_00001" "SARC_00002" "SARC_00003" "SARC_00004" "SARC_00005" "SARC_00008"
通过比较可以得出一个数字,显示列表之间共享基因的数量:

> length(intersect(names_G63, names_C28))
[1] 4097
我想将这些数字存储为矩阵,如:

      G63 C28 B124
G63     0
C28  4097   0
B124 3000 345    0

我想你在找这样的东西。一个矩阵,告诉你有多少基因在EXPT/集合之间共享

#First a vector of all genes
genes <-unlist(lapply(1:1500, function(x) paste(sample(LETTERS, 5, replace = T), collapse="")))

#Now five pseudo experiments that each generated a set 100 random genes from the set above
geneList <- lapply(1:5, function(x) sample(genes, 100))

#Now we turn the list of genes into a table of expts x genes
genedf <- stack(setNames(geneList, nm=paste("Expt", seq_along(geneList))))

#Use the cross product to count the overlaps
table(genedf[2:1]) %*% t(table(genedf[2:1]))

#         ind
# ind      Expt 1 Expt 2 Expt 3 Expt 4 Expt 5
#   Expt 1    100      8      5      7      7
#   Expt 2      8    100      5      5     10
#   Expt 3      5      5    100      8      4
#   Expt 4      7      5      8    100      8
#   Expt 5      7     10      4      8    100
#首先是所有基因的载体

基因查看
cor()
为了让我们能够回答您的问题,请通过为每个变量(或变量的代表子集)键入
dput(variableName)
并将控制台输出复制并粘贴到您的问题中,包括您的数据样本。还包括所提供数据的所需输出。有关如何在
R
中生成可复制示例的详细信息(并使您的问题更有可能得到回答),请查看。如果有两个向量包含字符串vec1和vec2,则
expand.grid(vec1,vec2)
将生成一个data.frame,其中所有成对组合均为行。例如
expand.grid(字母[1:4],字母[1:5])
。对不起,我尝试添加更多细节。或者没有堆叠
sapply(基因列表,函数(x)sapply(基因列表,函数(y)长度(相交(x,y)))
现在这太棒了!!谢谢@Emiliman5和@Chris S。。。。
geneList<-lapply(ls(pattern="names_"), get)
names(geneList) <- ls(pattern="names_")
genedf <- stack(setNames(geneList, nm=names(geneList)))
table(genedf[2:1]) %*% t(table(genedf[2:1]))