Как сопоставить список строк другому списку строк? - PullRequest
2 голосов
/ 05 апреля 2019

Я студентка, изучающая R впервые.Я использую пакет tidyverse (в частности, stringr) в RStudio, чтобы переключать первые и последние буквы строк в наборе данных Scrabble и сравнивать новый столбец переключаемых строк с исходным столбцом, чтобы найти совпадения.Набор данных включает в себя все играбельные слова Эрудит.По сути, я пытаюсь выяснить, сколько слов остаются действительными, пригодными для воспроизведения словами после переключения первого и последнего символов.

У меня нет проблем с поиском точных совпадений (например: AHA до AHA или *От 1007 * до 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, когда одна из переключаемых строк (обозначенная новым столбцом backwards) соответствует любой из строк в исходном столбце, word.

1 Ответ

1 голос
/ 05 апреля 2019

Не могу найти хороший дубликат (но я уверен, что он там есть).

Функция %in% делает то, что вы хотите.

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