【发布时间】:2021-01-06 20:47:50
【问题描述】:
我有一张 R 中股票的表格,我想根据 tq_get 和 tiingo API 计算 6 个月的回报。我想用 lapply 来填满我的桌子,但不幸的是,tiingo 上没有一些代码,或者可能是错误的,这会返回错误。由于此错误,分配的数据的行数少于现有数据,lapply 不起作用。我试图用tryCatch 解决,但它仍然无法正常工作。缺少什么?
today <- Sys.Date()
yesterday <- as.Date(today) - days(1)
before <- as.Date(today) - months(6)
tiingo_api_key('<my API key')
calculate <- function (x) {
((tq_get(x, get = "tiingo", from = yesterday, to = yesterday)$adjusted)/(tq_get(x, get = "tiingo", from = before, to = before)$adjusted)-1)
}
top10[20] <- lapply(top10[1], calculate(x) tryCatch(calculate(x), error=function(e) NA))
【问题讨论】:
-
你的循环应该类似于
lapply(top10[1], function(x) tryCatch(calculate(x), error=function(e) NA)) -
使用
top10[20] <- lapply(top10[1], calculate(x) tryCatch(calculate(x), error=function(e) NA))时出现语法错误,calculate(x)后面缺少,