2013-03-30 32 views
0

我有10 data.frame s有2列,名称为sps用于sequencep用于p-values。我想找到所有data.frame小号相交的序列,所以我这样做:相交10个大型数据集并自动合并

# 10 data.frames are a, b, c, ..., j 
masterseq_list <- Reduce(intersect, list(a$s, b$s, c$s, d$s, e$s, f$s, g$s,h$s, i$s,j$s)) 

我想借此masterseq_list和,所以我留下了每个data.frame有这个新的缩减序列合并的每个数据帧a:jmasterseq_list作为新列而不是sp-values保持不变。我知道我可以以某种方式使用这些代码,但是我真的不确定如果我想要的列目前​​是列表,那么该怎么做。

total <- merge(data frameA,data frameB,by="s") 

这些文件真的很大,所以我想找到一种方法来自动执行此操作,我怎样才能更快更有效地循环操作?非常感谢!

+1

'sqldf'可以在这方面帮助:https://code.google.com/p/sqldf/ –

回答

2

我想通过把所有的data.frame S IN一list第一次启动:

my_l <- list(a,b,c) 
# now get intersection 
isect <- Reduce(intersect, lapply(my_l, "[[", 1)) 
> isect 
# [1] "gtcg" "gtcgg" "gggaa" "cttg" 

# subset the original data.frames for just this intersecting rows 
lapply(my_l, function(x) subset(x, s %in% isect)) 
+0

(+ 1)为'lapply(my_l,“[[”,1)' –

+0

非常感谢你! – CadisEtRama

+0

我无法使子集功能正常工作。它说物体'没有找到。我是否将它添加为列表的名称? – CadisEtRama