【问题标题】:What would cause a ```.``` output using the %in% function, R? [closed]什么会导致使用 %in% 函数 R 的 ```.``` 输出? [关闭]
【发布时间】: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$rsIDdf2$rsID 的外观。看看他们俩有没有rs4,我觉得没有别的办法了。

标签: r dataframe bioinformatics vcf-variant-call-format


【解决方案1】:

该列可能包含“.”,这是一个合法值。在 vcf 中表示 NA。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-24
    • 2013-04-06
    相关资源
    最近更新 更多