我在这里发表问题:Matched Range Merge in R有关合并在一个文件中落入一个范围在第二个文件基于多项两个文件。到目前为止,我还没有成功将代码拼凑在一起来实现这一点。我遇到的问题是我正在使用的代码逐行比较文件。这是一个问题,因为1)一个文件比另一个文件长得多,并且2)我需要较短文件中的行扫描长文件中的每个范围对 - 不仅仅是同一行中的范围。通过合并范围中的R - 应用循环
我一直在使用原始问题中发布的函数,我觉得应该有一种方法可以将它应用于比较第一个文件中的每一行与第二个文件中的每一行的更一般的循环,但我还没有弄明白。如果有人有任何建议,我将不胜感激。
****编辑。
数据的性质是这样的:每个范围内不一定是唯一的,但大多数都是。它们的尺寸也不相同,有些完全落入其他尺寸。因此,findInterval
会产生错误,因为无法对范围进行排序以便处于“非降序”顺序。
以下是前6行,每行数据帧:
file1test <- data.frame(SNP=c("rs2343", "rs211", "rs754", "rs854", "rs343", "rs626"), BP=c(860269, 369640, 861822, 367934, 706940, 717244))
file2 <- data.frame(Gene=c("E613", "E92", "E49", "E3543", "E11", "E233"), BP_start=c(367640, 621059, 721320, 860260, 861322, 879584), BP_end = c(368634, 622053, 722513, 879955, 879533, 894689))
所以,你可以看到,5日线的范围位于4号线的范围内,并且从第一文件中的两个单核苷酸多态性在第四行的范围内,但只有一行落在第二行的范围内。
第一个文件,其中包含的SNP,只有〜400行。但是包含范围的第二个文件大约有20K。我想作为输出产生的是一个数据框,其中包含来自第一个文件(SNP)的行,并且BP位于第二个文件中的BP范围内。如果SNP分为两个范围,那么它会出现两次等
Was [this](http://stackoverflow.com/q/10474590/324364)问题根本没有帮助?当你找到解决方案时,你确实看到了,不是吗? – joran 2012-08-09 21:42:34
谢谢,我确实在我最初的搜索中查看了这个问题,但是我的范围并不一定是唯一的,这带来了额外的问题。 – mfk534 2012-08-09 22:57:35
好的。然后,您必须提供一个可重复的示例,以清楚表明'findInterval'不起作用的方式来说明您的数据特征。 (当然这也解释了你想如何合并才能工作,因为如果范围不是唯一的,合并的定义并不明确。 – joran 2012-08-09 22:59:39