跨越10个大型数据集并自动合并

时间:2013-03-30 21:02:51

标签: r loops merge automation set

我有10个data.frame个,其中包含2个名称为sp的列。 s用于sequencep用于p-values。我想找到跨越所有data.frame s的序列,所以我这样做了:

# 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并将每个数据框a:j合并为这个新的缩减序列,因此我将每个data.frame替换为masterseq_list作为新列sp-values完整无缺。我知道我可以以某种方式使用这个代码,但如果我想要的列目前​​是一个列表,我真的不知道该怎么做。

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

这些文件非常大,所以我想找到一种自动化方法,如何更快更有效地循环?非常感谢!

1 个答案:

答案 0 :(得分:2)

我首先将所有data.frame放在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))