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]))