Страница 1 из 1

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

Добавлено: 24 июн 2020, 08:37
VistaSV30
Добрый день!

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

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

Подскажите мне.
Спасибо!

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

Добавлено: 24 июн 2020, 09:43
nickleb
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)

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

Добавлено: 24 июн 2020, 11:14
nickleb
... также через функционал package'-а stringr:

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

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

stringr::str_locate_all(string_example, finding_substring)

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

Добавлено: 24 июн 2020, 11:20
nickleb
... шпаргалка по работе со строками посредством stringr:
http://edrub.in/CheatSheets/cheatSheetStringr.pdf

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

Добавлено: 24 июн 2020, 12:49
gamm
лучше освоить 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"

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

Добавлено: 24 июн 2020, 13:44
nickleb
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