我正在使用包装在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的文档,但是无法理解它。
谢谢。
答案 0 :(得分:4)
您需要将try
块放在函数中:
quotes <- lapply(tickers, function(x) try(getSymbols(x, ...)))
注意我们在这里使用更简单的try
。如果出现错误,则quotes
对象将在元素位置包含try-error
类的对象,从而导致错误。