2015-06-05 2 views
2

У меня есть строки, отформатированные как \t\tloc: 'Silver Spring, MD',, которые я извлек из веб-сайта и хочу получить только название города и сокращения состояний, например. Silver Spring, MD. Я думал о том, чтобы сделать комбинацию gsub и substr, но название города может измениться на основе других данных, поэтому не имеет смысла давать substr индекс начала и конца. Вот код, который я пытался до сих пор:Подстрока и gsub в R

# Would like to extract the string "Silver Spring, MD" 
# What I tried: 
ldata <- "\t\tloc: 'Silver Spring, MD'," 
dt<- gsub(".*: ", "",ldata) 
# Produces: 'Silver Spring, MD'," 

Строка, однако всегда оказывается таким же образом, с названием города в «ABCDE, FG» часть сегмента строки. Я новичок в R, поэтому, если есть более эффективный способ сделать это.

ответ

1
dt<-sub(".*'(.*)'.*","\\1",ldata) 
+0

Спасибо. Работала отлично. Хотя я пытаюсь понять это и не могу понять, что «(. *)» Читается как R. Это означает что-либо, заключенное внутри »? –

+1

Первый экземпляр '. *' Означает что угодно, пока он не попадет первым '' ',' '(. *)' 'Означает« найти одинарную кавычную последовательность и запомнить (''() 'делает это), что находится внутри ', затем продолжить с 'grep'. То, что запомнилось, хранится с командой '\\ 1', остальное сбрасывается. Я уверен, есть лучшее и более краткое объяснение, чем это, tho :) –

+0

@AlexeyFerapontov Нет, это было прекрасно. Спасибо. –

1

Другой вариант без использования группы захвата является

gsub("^[^']+'|',$", '', ldata) 
#[1] "Silver Spring, MD" 
Смежные вопросы