【发布时间】:2018-01-23 17:33:21
【问题描述】:
我的问题可能有点难以表述,因此我还没有找到任何解决方案,但我会尝试:
我不想根据它们是否共享另一个变量中的任何值来查找变量中的所有值对。也许下面的例子可以更清楚地说明它。
在这样的 2 变量数据框中:
data.frame(scaffold = c("A", "A", "B", "B", "B", "C", "C", "D"),
geneID = c("162", "276", "64", "276", "281", "64", "162", "162"))
#> scaffold geneID
#> A 162
#> A 276
#> B 64
#> B 276
#> B 281
#> C 64
#> C 162
#> D 162
...我想找到所有“脚手架”对A、B、C 和 D,它们共享任何“geneID”64、162, 176 和 281,这样上面就变成了一个数据框,所有的脚手架对都在 2 个新列中,如下所示:
data.frame(V1 = c("A", "A", "A", "B", "C"), V2 =c("B", "C", "D", "C", "D"))
#> V1 V2
#> A B
#> A C
#> A D
#> B C
#> C D
显然 A 和 B 与 B 和 A 是同一对,因此应该以某种方式删除它们,但这可能很容易。之后,需要将此数据框与包含脚手架 x/y 坐标的数据框组合,以便在带有脚手架的绘图顶部的对之间绘制一条线。
我确实有一个有效的 for 循环来完成这项工作,但我需要用一个更快的替代方案来替换它。我会省去你的代码,它很复杂,而且并不总是正确的。仅在 20 个脚手架上运行它可能需要几秒钟,但我需要在数千个脚手架上运行。我希望一系列 dplyr 或 data.table 函数可以完成这项工作,因为它们可能尽可能快,但我无法弄清楚如何做。
我希望你能帮助我,或者类似的东西已经存在于我无法找到的另一个威胁中。
@Florian 和@Roman 的两种解决方案的性能比较可以在http://rpubs.com/kasperskytte/SO_question_48407650 找到
【问题讨论】:
标签: r dataframe combinations