次のような文字列を持つ:
x <- c("31.12.2009EUR", "31.12.2009", "23.753,38", "0,00")
として解析したいと思います
c(NA, NA, 23753.38, 0.00)
私は試した:
require(readr)
parse_number(x, locale=locale(decimal_mark = ",")) # This ignores the grouping_mark
#> 31122009.00 31122009.00 23753.38 0.00
parse_double(x, locale=locale(decimal_mark = ","))
#> NA NA NA 0
私が思いついた唯一の方法:
out <- rep(NA, length(x))
ind <- grep("^[0-9]{1,3}(\\.[0-9]{3})*\\,[0-9]{2}", x)
out[ind] <- parse_number(x[ind],locale=locale(decimal_mark = ","))
out