#r #string #stringr
#r #строка #stringr
Вопрос:
Я студент бакалавриата, впервые изучающий R. Я использую tidyverse
пакет (в частности stringr
) в RStudio для переключения первой и последней букв строк в наборе данных Scrabble и сравнения нового столбца с переключенными строками с исходным столбцом для поиска совпадений. Набор данных включает все воспроизводимые слова Scrabble. По сути, я пытаюсь определить, сколько слов все еще являются допустимыми, воспроизводимыми словами после переключения первого и последнего символов.
У меня нет проблем с поиском точных совпадений (например: AHA
to AHA
или ABAYA
to ABAYA
), но неточные совпадения (например: REEL
to 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. я думаю, вы ищете оператор %in%. Он проверяет, присутствует ли элемент (например, слово) в другом объекте (например, вектор строк).
2. REEL!= LEER , поэтому он вернет FALSE . Чему именно вы хотите сопоставить?
Ответ №1:
Не могу найти хороший дубликат (но я уверен, что он где-то есть).
%in%
Функция делает то, что вы хотите.
scrabble5<-scrabble %>%
mutate(backwards = str_replace(word, "^(.)(.*)(.)$", "\3\2\1")) %>%
mutate(match = backwards %in% word)