【发布时间】:2020-04-07 21:28:25
【问题描述】:
我编写了一些代码来告诉我哪些 RSID 使用 %in% 函数在某些数据库之间匹配。它一直运行良好,直到它返回. 而不是 RSID#。如果我有两个 data.frames
df1 <- data.frame (
rsID = c("rs1", "rs2", "rs4"), stringsAsFactors = FALSE)
df2 <- data.frame(
rsID = c("rs1", "rs4", "rs8"), stringsAsFactors = FALSE)
我使用%in% 函数在data.frame 中为我提供匹配的rsID,我用它来从我感兴趣的数据库中提取更多信息。可能有更好的方法可以做到这一点,但这种方法似乎有效。
matches.df <- data.frame(
rsID = df1$rsID[(df1$rsID %in% df2$rsID)],
stringsAsFactors = FALSE)
到目前为止,代码将返回两个匹配的 rsID,“rs1”和“rs4”,但对于此数据库,它返回 rs1, .。
有没有人见过这个,或者知道为什么它会返回一个.
如果有帮助,我可以附上图片。谢谢。
【问题讨论】:
-
您没有提供重现问题的示例。因此,人们只能猜测问题所在。我的猜测是结果是正确的,但是您的 ID 不正确。可能在读取数据/从较长的字符串中解析 ID 信息时出错,或者类似的东西。
-
我不知道你的问题的答案 - 但
intersect(df1$rsID , df2$rsID)会给你两个都存在的 ID。更好地使用merge来组合来自您的两个数据帧的信息。 -
@KarolisKoncevičius 感谢您向我指出这一点。数据集非常大,我不知道如何创建可重现的示例,因为我不知道
.来自哪里,因为到目前为止这一直很好。我的直觉是它与数据集有关,而不是代码。 -
@GeorgeSavva 是否会合并匹配的 rsID 列?起初我尝试过合并,但无法避免笛卡尔连接,并且 rsID 没有对齐,这导致了额外的过滤步骤。
-
@Ctat41 您只需获取有问题的数据集,然后检查
df1$rsID和df2$rsID的外观。看看他们俩有没有rs4,我觉得没有别的办法了。
标签: r dataframe bioinformatics vcf-variant-call-format