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

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

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

Сообщение VistaSV30 »

Добрый день!

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

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

Подскажите мне.
Спасибо!
Природа не просто эксцентричнее, чем мы полагаем - она эксцентричнее, чем мы способны предположить. John Haldane
nickleb
Гуру
Сообщения: 968
Зарегистрирован: 22 май 2010, 20:20
Репутация: 154

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

Сообщение 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)
nickleb
Гуру
Сообщения: 968
Зарегистрирован: 22 май 2010, 20:20
Репутация: 154

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

Сообщение nickleb »

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

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

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

stringr::str_locate_all(string_example, finding_substring)
nickleb
Гуру
Сообщения: 968
Зарегистрирован: 22 май 2010, 20:20
Репутация: 154

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

Сообщение nickleb »

... шпаргалка по работе со строками посредством stringr:
http://edrub.in/CheatSheets/cheatSheetStringr.pdf
gamm
Гуру
Сообщения: 4168
Зарегистрирован: 15 окт 2010, 08:33
Репутация: 1107
Ваше звание: программист
Откуда: Казань

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

Сообщение 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"
nickleb
Гуру
Сообщения: 968
Зарегистрирован: 22 май 2010, 20:20
Репутация: 154

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

Сообщение 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
Ответить

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

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

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