我有一个数据集,我想在其中计算 6 个月的股票回报率tq_get
(参见下面的示例)
数据集调用top
ticker 6month
AKO.A
BIG
BGFV
功能
library(tidyverse)
library(dplyr)
library(tidyquant)
library(riingo)
calculate <- function (x) {
(tq_get(x, get = "tiingo", from = yesterday, to = yesterday)$adjusted/tq_get(x, get = "tiingo", from = before, to = before)$adjusted)-1
}
top[2] <- lapply(top[1], function(x) calculate(x))
不幸的是,对于某些代码,不存在任何值,这会在简单使用时导致错误消息,lapply
或者mutate
因为结果向量比现有数据集更小(更少行)。解决try_catch
没有奏效。
如果代码可用,我现在想通过检查is_supported_ticker()
包提供的方法来解决问题riingo
calculate <- function (x) {
if (is_supported_ticker(x, type = "tiingo") == TRUE) {
(tq_get(x, get = "tiingo", from = yesterday, to = yesterday)$adjusted/tq_get(x, get = "tiingo", from = before, to = before)$adjusted)-1
}
else {
NA
}
}
top[2] <- lapply(top[1], function(x) calculate(x))
但现在我收到错误消息x ticker must be length 1, but is actually length 3
。
我假设这是基于这样一个事实,即我的数据集的整个第一列被用作输入is_supported_ticker()
而不是逐行。我该如何解决这个问题?