Найти положение подстроки в строке

Вопросы по статистическому пакету R. Не обязательно гео.
Ответить
Аватара пользователя
VistaSV30
Активный участник
Сообщения: 185
Зарегистрирован: 02 июл 2018, 15:05
Репутация: 7
Откуда: Балашиха

Найти положение подстроки в строке

Сообщение VistaSV30 » 24 июн 2020, 08:37

Добрый день!

Не могу найти функцию R, чтобы найти положение подстроки в строке.
Например, надо найти номер позиции буквы "b" в строке "abcd".

Все функции, что нашел делают всё что угодно:
- возвращают TRUE если искомая буква есть;
- возвращают количество букв b в строке;
и т.д.

Подскажите мне.
Спасибо!
Природа не просто эксцентричнее, чем мы полагаем - она эксцентричнее, чем мы способны предположить. John Haldane

nickleb
Гуру
Сообщения: 964
Зарегистрирован: 22 май 2010, 20:20
Репутация: 154

Re: Найти положение подстроки в строке

Сообщение nickleb » 24 июн 2020, 09:43

VistaSV30 писал(а):
24 июн 2020, 08:37
Например, надо найти номер позиции буквы "b" в строке

Код: Выделить всё

string_example <- "abracadabra"
finding_symbol <- "b"

vector_with_each_symbol <- unlist(strsplit(string_example, ""))
positions_finding_symbol <- which(vector_with_each_symbol == finding_symbol)

str(positions_finding_symbol)

nickleb
Гуру
Сообщения: 964
Зарегистрирован: 22 май 2010, 20:20
Репутация: 154

Re: Найти положение подстроки в строке

Сообщение nickleb » 24 июн 2020, 11:14

... также через функционал package'-а stringr:

Код: Выделить всё

string_example <- "abracadabra"
finding_substring <- "br"

stringr::str_locate_all(string_example, finding_substring)

nickleb
Гуру
Сообщения: 964
Зарегистрирован: 22 май 2010, 20:20
Репутация: 154

Re: Найти положение подстроки в строке

Сообщение nickleb » 24 июн 2020, 11:20

... шпаргалка по работе со строками посредством stringr:
http://edrub.in/CheatSheets/cheatSheetStringr.pdf

gamm
Гуру
Сообщения: 4056
Зарегистрирован: 15 окт 2010, 08:33
Репутация: 1054
Ваше звание: программист
Откуда: Казань

Re: Найти положение подстроки в строке

Сообщение gamm » 24 июн 2020, 12:49

лучше освоить grep и его производные, позволяют творить чудеса, включая контекстные замены по патерну. В данном случае нужен gregexpr

Код: Выделить всё

unlist(gregexpr(pattern ='2',"the2quickbrownfoxeswere2tired"))
[1]  4 24

# а вот и чудеса: если третьей буквой от начала строки является c, то вставить перед ней буку X
str <- c("abcdccc","hijklccc","abcuioccc")
gsub("(^.{2})(?=c)(.*$)", "\\1X\\2", str, perl = T)
[1] "abXcdccc"   "hijklccc"   "abXcuioccc"

nickleb
Гуру
Сообщения: 964
Зарегистрирован: 22 май 2010, 20:20
Репутация: 154

Re: Найти положение подстроки в строке

Сообщение nickleb » 24 июн 2020, 13:44

gamm писал(а):
24 июн 2020, 12:49
лучше освоить grep и его производные, позволяют творить чудеса, включая контекстные замены по патерну. В данном случае нужен gregexpr
Да! Регулярные Выражения! Знание их и умения в них - великая сила!
В свободном доступе есть неплохая брошюра о работе со строками в R, в которой уделено внимание и регулярным выражениям:
https://www.gastonsanchez.com/Handling_ ... s_in_R.pdf
И ещё:
https://clayford.github.io/dwir/dwr_07_ ... sions.html

Ответить

Вернуться в «R»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 9 гостей