如何将一个字符串列表与另一个字符串列表匹配?

时间:2019-04-05 18:32:46

标签: r string stringr

我是第一次学习R的本科生。我在RStudio中使用tidyverse包(特别是stringr)来切换Scrabble数据集中的字符串的第一个和最后一个字母,并将新的,切换的字符串列与原始列进行比较以查找匹配项。数据集包括所有可玩的拼字游戏单词。从本质上讲,在切换第一个和最后一个字符后,我试图找到多少个仍然有效的可播放单词。

我完全可以找到完全匹配的内容(例如:AHAAHAABAYAABAYA),但是不完全匹配(例如:REELLEER)显示为FALSE。 这是我的完全匹配代码:

scrabble5<-scrabble%>%
  mutate(backwards=str_replace(word, "^(.)(.*)(.)$", "\\3\\2\\1"))%>%
  mutate(match=backwards==word)

我认为将any()添加到最后一行是可行的,因此代码应为:

scrabble5<-scrabble%>%
  mutate(backwards=str_replace(word, "^(.)(.*)(.)$", "\\3\\2\\1"))%>%
  mutate(match=backwards==any(word))

但是,当我尝试此操作时,match列不会打印任何TRUE值,而只会显示FALSE

最终,我希望我的match列的所有匹配项(无论准确与否)都读为TRUE

编辑:如果上述措辞令人困惑,我深表歉意。我的理想端点是当一个切换的字符串(由新的TRUE表示)与原始列{{1}中的任何一个字符串匹配时,使逻辑列具有backwards值}。

1 个答案:

答案 0 :(得分:1)

找不到很好的副本(但我敢肯定有一个副本)。

%in%函数可以满足您的需求。

scrabble5<-scrabble %>%
  mutate(backwards = str_replace(word, "^(.)(.*)(.)$", "\\3\\2\\1")) %>%
  mutate(match = backwards %in% word)