首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >getSplits (Quantmod,Quantmod)在拔出多个代码时的错误

getSplits (Quantmod,Quantmod)在拔出多个代码时的错误
EN

Stack Overflow用户
提问于 2020-09-01 04:58:58
回答 2查看 80关注 0票数 1

当试图在所有S&P 500代码机上运行getSplits函数时,我收到以下错误:“open.connection中的错误(文件”,"rt"):HTTP错误404)

如果我对所提供的代码进行子集,并且只运行其中的一部分,我就能够运行该函数。是否有一种方法可以编写一行代码来绕过可能导致HTTP错误的任何代码标记?

代码语言:javascript
复制
library(tidyverse)
library(BatchGetSymbols)
library(quantmod)

tickers <- GetSP500Stocks()

split_env <- lapply(tickers, function(x) getSplits(x))
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-09-01 18:39:31

您可以使用try()防止其中断:

代码语言:javascript
复制
library(tidyverse)
library(BatchGetSymbols)
library(quantmod)

tickers <- GetSP500Stocks()[1:20,]

split_env = lapply(tickers$Tickers,function(x)try(getSplits(x)))
names(split_env) = tickers$Tickers

如果我没有错,你可以得到没有错误的

代码语言:javascript
复制
head(split_env[sapply(split_env,is.xts)])
$MMM
           MMM.spl
1972-06-16     0.5
1987-06-16     0.5
1994-04-11     0.5
2003-09-30     0.5

$ABT
           ABT.spl
1981-06-01  0.5000
1986-06-02  0.5000
1990-06-01  0.5000
1992-06-01  0.5000
1998-06-01  0.5000
2004-05-03  0.9356
2013-01-02  0.4798

$ABMD
           ABMD.spl
2000-10-02      0.5

$ACN
           ACN.spl
2011-12-30     0.1

$ATVI
            ATVI.spl
2001-11-21 0.6666667
2003-06-09 0.6666667
2004-03-16 0.6666667
2005-03-23 0.7500000
2005-10-25 0.7500000
2008-09-08 0.5000000

$ADBE
           ADBE.spl
1987-03-12      0.5
1988-11-23      0.5
1993-08-11      0.5
1997-07-29      1.0
1997-10-29      1.0
1999-10-27      0.5
2000-10-25      0.5
2005-05-24      0.5
票数 2
EN

Stack Overflow用户

发布于 2020-12-04 20:08:44

安装quantmod v. 0.4.17.2以后;CRAN还没有这个版本,所以从github直接安装devtools::install_github("joshuaulrich/quantmod"),因为新版本可以处理多个连接和句柄(检查),您需要这样做才能将多个请求推送给雅虎。

下面的函数使用多个核。因此,如果您不需要%do%,可以用%do%替换它。

代码语言:javascript
复制
RawData.Splits <- function(stocks, from)
{
  x <- foreach(ticker = stocks, .combine = bind_rows
               , .errorhandling = "remove", .inorder = F, .multicombine = T
               ) %dopar%
              {
                x <- tryCatch({suppressWarnings(
                                quantmod::getSplits(ticker, from, envir = .GlobalEnv)
                                )},
                              error = function(e) {data.frame()})

            if(xts::is.xts(x))
            {
              names(x) <- c("split.ratio")
              x <- as.data.frame(x) %>% mutate(split.ds = rownames(.), ticker) %>%
                select(ticker, split.ds, split.ratio)
              
              cat(paste0(ticker, "; "))
            }
            else {x <- data.frame()}
            
            rm(ticker)
            return(x)
          }

  if(nrow(x) > 0) 
  { x <- x %>% mutate(split.ds = as.Date(split.ds), updated.on = Sys.Date()) }
  
  rm(stocks, from)
  return(x)
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63681619

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档