使用semi_join查找相似之处,但没有错误返回

时间:2018-11-29 23:53:52

标签: r dataframe dplyr semi-join

我正在尝试在两列之间找到相似的基因,以后可以只使用相似的基因。下面是我的代码:

top100_1Beta <- data.frame(grp1_Beta$my_data.SYMBOL[1:100])
top100_2Beta<- data.frame(grp2_Beta$my_data.SYMBOL[1:100])
common100_Beta <- semi_join(top100_1Beta,top100_2Beta)`

运行代码时,出现以下错误:

  

错误:by是必需的,因为数据源没有公共变量

这是错误的,因为当我打开top100_1Betatop100_2Beta时,我至少看到前几个列出了完全相同的基因:ATP2A1,SLMAP,MEOX2,...

我很困惑为什么然后返回没有共同点。 任何帮助将不胜感激。 谢谢!

2 个答案:

答案 0 :(得分:2)

在没有完整的工作示例的情况下,我猜测您的top100_1Beta和top100_2Beta数据框没有相同的列名。它们可能是grp1_Beta.my_data.SYMBOL.1.100.grp2_Beta.my_data.SYMBOL.1.100.。这意味着semi_join函数不知道在哪里匹配数据帧。重命名列应解决此问题。

答案 1 :(得分:2)

我认为这里不需要任何形式的*_join;相反,您似乎正在寻找intersect

intersect(grp1_Beta$my_data.SYMBOL[1:100], grp2_Beta$my_data.SYMBOL[1:100])

这将返回vectorgrp1_Beta$my_data.SYMBOL的前100个条目中的grp1_Beta$my_data.SYMBOL个公共条目。