После точки есть пробел, который вызывает ошибку. Какое ожидаемое число из этой последовательности (0,23 или 23)?
parse_number
, кажется, ищет десятичные и группирующие разделители, как определено вашей локалью, см. Документацию здесь https://www.rdocumentation.org/packages/readr/versions/1.3.1/topics/parse_number
Вы можете изменить языковой стандарт, используя следующую команду (grouping_mark - это точка с пробелом):
parse_number("art. 23", locale=locale(grouping_mark=". ", decimal_mark=","))
Output: 23
или удалить пробел перед:
parse_number(gsub(" ", "" , "art. 23"))
Output: 0.23
Редактировать: Для обработки точек в качестве сокращений и чисел используйте следующее:
library(stringr)
> as.numeric(str_extract("art. 23", "\\d+\\.*\\d*"))
[1] 23
> as.numeric(str_extract("%ç*%&23", "\\d+\\.*\\d*"))
[1] 23
Выше используются регулярные выражения для идентификации числовых паттернов в строках.
-
\\d+
находит цифры \\.*
находит точку \\d*
находит остальные цифры
Примечание: Я нет экспертов по регулярным выражениям, но есть множество других ресурсов, которые сделают вас одним