Rstudio:尝试在数据框中使用%in%运算符时出错

时间:2018-04-06 14:13:13

标签: r dataframe

我想查找数据帧的某个单元格是否包含另一个数据帧的另一个单元格中存在的单词。具体来说:

geoplaces$name[1]的值为:Athens

adresses$Comments[1]的值为:Is he still in Athens?

但是当我执行以下脚本时:

if(geoplaces$name[1] %in% adresses$Comments[1]){
  print("hello")
}else{print("error")}

我得到"错误"结果。

有关这方面的错误的任何建议吗?

2 个答案:

答案 0 :(得分:3)

%in%运算符正在寻找完全匹配。在你的情况下,"雅典"包含在由单个元素组成的向量中#34;他还在雅典吗?"

您可能对子串匹配感兴趣。有很多方法可以做到这一点。您可以使用grepl函数尝试此操作:

if(grepl(geoplaces$name[1], adresses$Comments[1])) {
  print("hello")
} else {
  print("error")
} 

答案 1 :(得分:2)

在这里,您要检查向量的第一个元素(geoplaces$name[1])是否与另一个向量的第一个元素(adresses$Comments[1])相对应。它比较字符串是否相同。但他们并不是。 如果您只想要元素(雅典)在列表中的逻辑,请尝试正则表达式。所以这应该有效:grepl(geoplaces$name[1], adresses$Comments[1])