R:if else 语句将列作为整个向量处理

问题描述

我有一个数据集,我想用 tq_get 计算股票 6 个月的回报(见下面的例子)

名为 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,from = before,to = before)$adjusted)-1
}

top[2] <- lapply(top[1],function(x) calculate(x))

不幸的是,对于某些股票代码,当简单地使用 lapplymutate 时,没有值会导致错误消息,因为结果向量比现有数据集更小(行数更少)。使用 try_catch 解决没有用。

我现在想通过检查包 is_supported_ticker() 提供的 riingo 是否有可用的代码来解决问题

calculate <- function (x) {
  if (is_supported_ticker(x,type = "tiingo") == TRUE) {
  (tq_get(x,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() 的输入,而不是逐行输入。我该如何解决这个问题?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)