Reputation: 5366
I'm trying to get use data to write an URL and scrape the data from a website. My function is on github : https://github.com/blaquans/RInsee/blob/master/R/inflation.R.
It works fine with small numbers but it does not work with large numbers :
> inflation(input = 4000, input.currency = "Euro", input.year = 2004, output.currency = "Euro", output.year = 2012)
http://www.insee.fr/fr/themes/calcul-pouvoir-achat.asp?sommeDepart=4000&deviseDepart=Euro&anneeDepart=2004&deviseArrivee=Euro&anneeArrivee=2012
[1] 4569.57
> inflation(input = 400000, input.currency = "Euro", input.year = 2004, output.currency = "Euro", output.year = 2012)
ERROR
http://www.insee.fr/fr/themes/calcul-pouvoir-achat.asp?sommeDepart=4e+05&deviseDepart=Euro&anneeDepart=2004&deviseArrivee=Euro&anneeArrivee=2012
[1] NA
The reason is that R transform 400000 in 4e+06 and doesn't write the good URL. How can I force R to write 400000 instead of 4e+06 ?
Upvotes: 0
Views: 133
Reputation: 4444
Use options(scipen =)
inflation <- function(input, input.currency, input.year, output.currency, output.year) {
oldscipen <- options('scipen')$scipen
options(scipen = 999)
require("RCurl")
tx <- getURL(paste("http://www.insee.fr/fr/themes/calcul-pouvoir-achat.asp?sommeDepart=",input, "&deviseDepart=",input.currency,"&anneeDepart=",input.year, "&deviseArrivee=",output.currency, "&anneeArrivee=",output.year, sep = ""))
patrick <- ".*<strong class=\"resultat\">([[:digit:][:blank:],]+)[[:blank:]eurosfracin]+</strong>.*"
if (grepl(pattern = patrick, x = tx) == TRUE){
out <- sub(pattern = patrick , replacement = "\\1", x = tx)
out <- as.numeric(gsub( pattern = "[[:blank:]]", replacement = "", x = gsub(pattern = ",", replacement = ".", x = out)))
}
else {
cat("ERROR \n")
out <- NA
}
options(scipen = oldscipen)
return(out)
}
Testing your example:
> inflation(input = 4000, input.currency = "Euro", input.year = 2004, output.currency = "Euro", output.year = 2012)
Loading required package: RCurl
Loading required package: bitops
[1] 4569.57
>
> inflation(input = 400000, input.currency = "Euro", input.year = 2004, output.currency = "Euro", output.year = 2012)
[1] 456956.5
Upvotes: 1