I have a data set where I want to calculate the 6 month return of stocks with tq_get
(see example below)
Dataset called top
ticker 6month
AKO.A
BIG
BGFV
Function
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))
Unfortunately for some of the tickers there is no value existing which results in error message when simply using lapply
or mutate
as the resulting vector is smaller (less rows) then the existing dataset. Resolving with try_catch
did not worked.
I now wanted to apply a work around by checking with is_supported_ticker()
provided by the package riingo
if the ticker is available
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))
But now I receive the error message x ticker must be length 1, but is actually length 3
.
I assume this is based on the fact that the whole first column of my dataset is used as input for is_supported_ticker()
instead of row by row. How can I resolve this issue?