Я пытаюсь извлечь слово, за которым следуют определенные буквы. Например, в этом примере я пытаюсь извлечь слова, которые следуют «AB»извлечение слова из предложения в R
x = c("So much fun - AB22148",
"AC33648 does whatever",
"I know -AB11025 Failed",
"Nothing stalled - AB16228",
"Unable to do fdS2083D - Ab26604")
Num = character(0)
for (i in 1:length(x)) {
y = unlist(strsplit(x[i]," "))
Num[i] = grep("AB",y, perl = T, value = T, ignore.case = T)
}
Есть пара вопросов (как вы могли бы, вероятно, сказать): 1. Если «AB» нет, то я получаю сообщение об ошибке так как Num не может принимать нулевую длину. 2. Если я преодолю это (например, заменив AC на AB), то пятая запись дает мне «неспособность» вместо «Ab26604».
Я ищу: 1. Можно ли это сделать без цикла (возможно, используя одну из функций приложения) 2. Как объяснить сценарий с 3-м и 5-м случаями? [Я хотел, чтобы удалить «-'sign (я могу позаботиться об этом в следующем шаге, но было интересно, если это может быть сделано одновременно)]
Num (current output)
[1] "AB22148" " " "-AB11025" "AB16228" "Unable"
Num (required output)
[1] "AB22148" " " "AB11025" "AB16228" "Ab26604"
Спасибо за помощь. Я очень ценю это. Пожалуйста, дайте мне знать, если вам нужны дополнительные разъяснения
'GSUB ('(я) \\ Ь (АВ \\ S +) |?.', '\\ 1', х, Perl = TRUE)' – rawr
@rawr ты должен отправить ответ и объяснить колдовство. В частности, '| .' в конце. –