【问题标题】:intersecting across 10 large data sets and merging automatically跨 10 个大型数据集相交并自动合并
【发布时间】:2013-03-30 21:02:50
【问题描述】:

我有 10 个 data.frames,其中 2 列名称为 sps 用于sequencep 用于p-values。我想找到与所有data.frames 相交的序列,所以我这样做了:

# 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.framemasterseq_list 作为新列而不是s 和@987654336 @保持不变。我知道我可以以某种方式使用此代码,但如果我想要的列当前是一个列表,我真的不确定该怎么做。

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

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

【问题讨论】:

标签: r loops merge automation set


【解决方案1】:

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

【讨论】:

  • (+1) lapply(my_l, "[[", 1)
  • 我无法让子集函数工作。它说找不到对象。我是否将其添加为列表的名称?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-30
  • 1970-01-01
  • 1970-01-01
  • 2019-03-03
  • 1970-01-01
相关资源
最近更新 更多