使用%in%函数R时,什么会导致输出?

使用%in%函数R时,什么会导致输出?,r,dataframe,bioinformatics,vcf-variant-call-format,R,Dataframe,Bioinformatics,Vcf Variant Call Format,我已经编写了一些代码,使用%函数中的%来告诉我哪些RSID在某些数据库之间匹配。到目前为止,它运行良好,返回的是,而不是RSID。如果我有两个数据帧 df1 <- data.frame ( rsID = c("rs1", "rs2", "rs4"), stringsAsFactors = FALSE) df2 <- data.frame( rsID = c("rs1", "rs4", "rs8"), stringsAsFactors = FALSE) 目前为止,代码将返回两个匹配的

我已经编写了一些代码,使用%函数中的
%来告诉我哪些RSID在某些数据库之间匹配。到目前为止,它运行良好,返回的是
,而不是RSID。如果我有两个数据帧

df1 <- data.frame (
rsID = c("rs1", "rs2", "rs4"), stringsAsFactors = FALSE)
df2 <- data.frame(
rsID = c("rs1", "rs4", "rs8"), stringsAsFactors = FALSE)
目前为止,代码将返回两个匹配的rsid,“rs1”和“rs4”,但对于这个数据库,它将返回
rs1,.

以前是否有人看到过这一点,或者对它返回


如果有帮助,我可以附加图像。谢谢。

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

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

您没有提供重现问题的示例。因此,人们只能猜测问题出在哪里。我猜结果是正确的,但是你的身份证不正确。可能是从较长的字符串读取数据/解析ID信息时出错了,或者类似的错误。我不知道您的问题的答案-但是
intersect(df1$rsID,df2$rsID)
将为您提供这两个字符串中的ID。最好使用
merge
组合来自两个数据帧的信息。@Karoliskoncevicius感谢您向我指出这一点。数据集非常大,我不知道如何创建一个可复制的示例,因为我不知道
从何而来,因为到目前为止这一切都很顺利。我的直觉是它与数据集有关,而不是与代码有关。@GeorgeSavva合并会将匹配的rsID列对齐吗?起初我曾尝试过合并,但无法避免笛卡尔连接和rsID未对齐,这导致了额外的筛选步骤。@Ctat41您只需查看有问题的数据集,然后检查
df1$rsID
df2$rsID
的外观。看看他们是否都有rs4,我不认为还有其他方法。你没有提供一个重现问题的例子。因此,人们只能猜测问题出在哪里。我猜结果是正确的,但是你的身份证不正确。可能是从较长的字符串读取数据/解析ID信息时出错了,或者类似的错误。我不知道您的问题的答案-但是
intersect(df1$rsID,df2$rsID)
将为您提供这两个字符串中的ID。最好使用
merge
组合来自两个数据帧的信息。@Karoliskoncevicius感谢您向我指出这一点。数据集非常大,我不知道如何创建一个可复制的示例,因为我不知道
从何而来,因为到目前为止这一切都很顺利。我的直觉是它与数据集有关,而不是与代码有关。@GeorgeSavva合并会将匹配的rsID列对齐吗?起初我曾尝试过合并,但无法避免笛卡尔连接和rsID未对齐,这导致了额外的筛选步骤。@Ctat41您只需查看有问题的数据集,然后检查
df1$rsID
df2$rsID
的外观。看看他们是否都有rs4,我想没有别的办法了。
matches.df <- data.frame(
rsID = df1$rsID[(df1$rsID %in% df2$rsID)],
stringsAsFactors = FALSE)