我是第一次学习R的本科生。我在RStudio中使用tidyverse
包(特别是stringr
)来切换Scrabble数据集中的字符串的第一个和最后一个字母,并将新的,切换的字符串列与原始列进行比较以查找匹配项。数据集包括所有可玩的拼字游戏单词。从本质上讲,在切换第一个和最后一个字符后,我试图找到多少个仍然有效的可播放单词。
我完全可以找到完全匹配的内容(例如:AHA
到AHA
或ABAYA
到ABAYA
),但是不完全匹配(例如:REEL
至LEER
)显示为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
值}。
答案 0 :(得分:1)
找不到很好的副本(但我敢肯定有一个副本)。
%in%
函数可以满足您的需求。
scrabble5<-scrabble %>%
mutate(backwards = str_replace(word, "^(.)(.*)(.)$", "\\3\\2\\1")) %>%
mutate(match = backwards %in% word)