首页 > 解决方案 > R中将一种货币转换为另一种货币的函数

问题描述

鉴于以下情况,从 1 美元到

我将如何编写一个函数来从一种货币转换为另一种货币?

该函数应该像这样工作 -amount是数字,from并且to是字符串:

currency(amount = 1, from = 'usd', to = 'euro')
## [1] 8.7

我唯一能想到的就是写大量的 if 语句,但这对于所有这些可能的货币转换/组合来说似乎太乏味了。

我也在考虑在我的函数中创建一个命名向量,如下所示:c('euro' = 0.93, 'peso' = 24.71, 'franc' = 0.98, ...)等等以显示从 1 美元到这些货币的转换率。但仍然不确定如何编写一个函数来解释所有这些货币转换(美元、欧元、比索、法郎、奥地利元、新西兰元、加元)。

标签: rfunctioncurrency

解决方案


这是一个函数,它确实存在轻微的舍入误差,但只需要更高分辨率的数字来减少该误差 - 我的值来自谷歌搜索每种货币 10000 美元。如果您想保持值自动更新,您还可以查看从网络上抓取值的包(rvest?)。

currencyCon <- function(x, from = "USD", to = "EUR"){
  # assign values: 1 usd in each currency 
  values <- c(1.000000, 0.927985, 0.810100, 107.624500)
  # names attribute 
  names(values) <- c("USD", "EUR", "GBP", "YEN")
  # calculate (convert from into USD, and divide to)
  values[to] / (values[from] / x)
}

# Testing 
currencyCon(1, "USD", "EUR")
currencyCon(1, "EUR", "EUR")
currencyCon(1, "GBP", "YEN")

这返回

 > currencyCon(1, "USD", "EUR")
 EUR 
 0.927985
 > currencyCon(1, "EUR", "EUR")
 EUR 
 1 
 > currencyCon(1, "GBP", "YEN")
 YEN 
 132.8534

推荐阅读