Одно решение, которое использует двоеточие перед числами:
a <- ":amount_min: !ruby/object:BigDecimal 18:0.8e2 :operator_min: gt :amount_max: !ruby/object:BigDecimal 18:0.1e4 :operator_max: lt"
find_pos <- gregexpr(pattern = ":[[:digit:]]", text = a)
get_string <- gsub(pattern = ":", "", substring(a,first=find_pos[[1]],last=find_pos[[1]]+5))
final <- paste("min: ", as.numeric(get_string[1]), ", max: ", as.numeric(get_string[2]))
У меня также есть жестко закодированный раствор:
first_split <- strsplit(a, "BigDecimal 18:" )
min_val <- strsplit(first_split[[1]][2], ":")[[1]][1]
max_val <- strsplit(first_split[[1]][3], ":")[[1]][1]
final <- paste("min: ", as.numeric(min_val), ", max: ", as.numeric(max_val))
Существуют другие решения для извлечения 0.8e2 , но это значение всегда можно перевести как as.numeric