即使在使用quantmod的getSymbols遇到错误后也要继续使用

时间:2015-02-09 20:30:26

标签: r error-handling xts lapply quantmod

我正在使用包装在lapply声明中的quantmod从yahoo finance下载一些信息:

require(quantmod)
tickers <- c("AAPL", "MSFT", "MKQ", "TSLA")
quotes <- lapply(tickers,function(x) getSymbols(x, src="yahoo", from="2015-02-01", auto.assign=FALSE)) 

股票代码MKQ是故意编制的。我想循环打印错误但仍然创建一个xts对象列表,其中包含其他3个代码的请求数据。

我尝试使用tryCatch,但是没有成功:

quotes <- tryCatch(lapply(tickers,function(x) getSymbols(x, 
src="yahoo", from="2015-02-01", auto.assign=FALSE)) , error=function(e) NULL)

有关如何执行此操作的任何建议?我阅读了关于tryCatch的文档,但是无法理解它。

谢谢。

1 个答案:

答案 0 :(得分:4)

您需要将try块放在函数中:

quotes <- lapply(tickers, function(x) try(getSymbols(x, ...)))

注意我们在这里使用更简单的try。如果出现错误,则quotes对象将在元素位置包含try-error类的对象,从而导致错误。