Страница 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