Вот кое-что.Вместо создания сложного регулярного выражения мы разбиваем его на несколько шагов.Сначала мы разбиваем данные на строки и отфильтровываем соответствующие строки, затем регулярное выражение гораздо проще.
# Extract text
at <- a[["text"]]
# Split text by line
at_split <- strsplit(at, "\\n+")[[1]] # character vector of lines
# Extract only those lines that start with Comentario and contain at least one number
at_split_com <- at_split[str_detect(at_split, "^Comentario\\s") & str_detect(at_split, "\\d")]
df <- data.frame(
# Year is just the first 4 digit number preceded by space
Año = str_extract(at_split_com, "\\s\\d{4}"),
# Week is assumed to be the first number in the line
Semana = str_extract(at_split_com, "\\d+"),
# THe whole line
Comentario = at_split_com
)
head(df,10)
Año Semana Comentario
1 2018 46 Comentario semanal, semana epidemiológica 46: Del 19 al 25 noviembre, 2018
2 2018 45 Comentario semanal, semana epidemiológica 45: Del 5 al 11 noviembre, 2018
3 2018 44 Comentario semanal, semana epidemiológica 44: Desde el 29 de octubre al 4 noviembre, 2018
4 2018 41 Comentario semanal, semana epidemiológica 41: Desde el 8 al 14 octubre, 2018
5 2018 39 Comentario semanal, semana epidemiológica 39: Desde el 24 al 30 septiembre, 2018
6 2018 38 Comentario semanal, semana epidemiológica 38: Desde el 17 al 23 septiembre, 2018
7 2018 36 Comentario semanal, semana epidemiológica 36: Desde el 3 al 9 de septiembre, 2018
8 2018 35 Comentario semanal, semana epidemiológica 35: Desde el 27 agosto al 2 de septiembre, 2018
9 2018 30 Comentario semanal, semana epidemiológica 30: Desde el 23 al 29 de julio, 2018
10 2018 28 Comentario semanal, semana epidemiológica 28: Desde el 9 al 15 de julio, 2018