You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R语言调用priceR包historical_exchange_rates函数仅提取目标汇率值

实现方法

historical_exchange_rates()默认返回包含日期、汇率两列的data.frame对象,直接赋值会生成嵌套列,只需在调用时提取返回结果的第二列数值即可。注意apply按行运算时会自动把所有列转成字符型,容易出现日期参数类型错误,优先推荐使用data.table原生行操作实现。

方案1:修改现有apply代码

在匿名函数中提取返回结果的汇率值,同时补全日期类型转换,代码如下:

par_values_test$Par_value_EUR <- apply(
  par_values_test[,c('TR.FiCurrency','TR.FiIssueDate')], 1, 
  function(y) {
    rate_res <- historical_exchange_rates(
      y['TR.FiCurrency'], 
      "EUR", 
      as.Date(y['TR.FiIssueDate']),
      as.Date(y['TR.FiIssueDate'])
    )
    rate_res[[2]]
  }
)

方案2:data.table原生语法(推荐)

使用by = .I指定按行逐组运算,不会自动转换列类型,代码更简洁、运行效率更高,还可以直接跳过EUR币种的接口请求:

par_values_test[, Par_value_EUR := {
  if (TR.FiCurrency == "EUR") {
    1
  } else {
    rate_res <- historical_exchange_rates(TR.FiCurrency, "EUR", TR.FiIssueDate, TR.FiIssueDate)
    rate_res[[2]]
  }
}, by = .I]

运行后第一行2015-05-12的SEK兑EUR汇率会正确返回0.108031,Par_value_EUR列为数值型向量,不会再出现嵌套data.frame的问题。

内容的提问来源于stack exchange,提问作者Elias K.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.30 01:01:28