【发布时间】:2011-12-14 09:55:54
【问题描述】:
一直在尝试使用 quantmod 通过循环分析大量股票。问题是我不知道雅虎是否拥有我需要的所有库存数据,所以我试图对 R 进行编程以在下载失败时跳过错误,但我似乎无法关闭警告消息。在通常的库启动后,我这样做并得到:
> options(show.error.messages = FALSE)
> getSymbols("gewg", warnings = FALSE)
Warning message:
In download.file(paste(yahoo.URL, "s=", Symbols.name, "&a=", from.m, :
cannot open: HTTP status was '404 Not Found'`
知道为什么会这样吗?
编辑: 我已经包含了我用来测试它的代码,可以看出只有 NOTE1 出现,而 NOTE2 没有出现。我用 a2 中的工作代码试了一下,NOTE1 和 NOTE2 都出现了。
> tester2 <- function(){
+ tester <- function() {
+ a <- getSymbols("GOOG", auto.assign = FALSE)
+ cat("NOTE1")
+ a2 <- getSymbols("JWEGOWN", auto.assign = FALSE)
+ cat("NOTE2")
+ a3 <- getSymbols("GS", auto.assign = FALSE)
+ return(a3)
+ }
+ return(try(tester(), TRUE))
+ }
> af <- tester2()
NOTE1Warning message:
In download.file(paste(yahoo.URL, "s=", Symbols.name, "&a=", from.m, :
cannot open: HTTP status was '404 Not Found'
>
【问题讨论】:
-
脚本只生成警告,所以它不应该崩溃。你到底是什么问题?
-
基本上我正在尝试使用循环对股票列表进行测试,每次我在雅虎没有数据的股票代码上运行 getSymbol() 时,它都会停止循环并给出我这个消息。这就是为什么我试图找到一种方法来覆盖它。
-
哦,我关闭了错误消息,否则会出现类似以下内容的错误:“download.file 中的错误(paste(yahoo.URL,“s=”,Symbols.name,“&a =", from.m, : 无法打开 URL 'chart.yahoo.com/…'"
-
我想说:接受错误消息并使用 try() 来捕获错误。 (另见下面我的回答)。