Функция для конвертации из одной валюты в другую валюту в R - PullRequest
0 голосов
/ 23 апреля 2020

Учитывая следующее, от 1 доллара США до

  • евро
  • песо
  • франк c
  • австралийский доллар
  • Новозеландский доллар
  • Канадский доллар

Как бы написать функцию для преобразования из одной валюты в другую?

Функция должна работать следующим образом - amount это цифры c, from и to - строки символов:

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

Единственное, что я могу подумать, если это писать многочисленные заявления if, но это кажется слишком утомительным для всех этих, возможно, конвертаций / комбинаций валют.

Я также думаю о создании именованного вектора в моей функции следующим образом: c('euro' = 0.93, 'peso' = 24.71, 'franc' = 0.98, ...) и так далее, чтобы показать курсы обмена от 1 доллара США к этим валютам. Но все еще не уверен, как написать функцию, которая учитывает все эти конвертации валюты (доллары США, евро, песо, франк c, австрийский доллар, новозеландский доллар, канадский доллар).

1 Ответ

0 голосов
/ 24 апреля 2020

Вот функция, она страдает от незначительной ошибки округления, но ей просто нужны числа с большим разрешением, чтобы уменьшить эту ошибку - мои значения получены из поисков Google по 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
...