[英]Calling a list of tickers in quantmod using R
我想使用Quantmod从中国股票列表中获取一些数据。
列表如下:
002705.SZ -- 002730.SZ
(在此顺序中,有一些报价与空股票匹配,例如,没有股票称为002720.SZ)
300357.SZ -- 300402.SZ
603188.SS
603609.SS
603288.SS
603306.SS
603369.SS
我想编写一个循环来运行所有这些库存以从它们中获取数据并将它们保存到一个数据帧中。
这应该使您入门。
library(quantmod)
library(stringr) # for str_pad
stocks <- paste(str_pad(2705:2730,width=6,side="left",pad="0"),"SZ",sep=".")
get.stock <- function(s) {
s <- try(Cl(getSymbols(s,auto.assign=FALSE)),silent=T)
if (class(s)=="xts") return(s)
return (NULL)
}
result <- do.call(cbind,lapply(stocks,get.stock))
head(result)
# X002705.SZ.Close X002706.SZ.Close X002707.SZ.Close X002708.SZ.Close X002709.SZ.Close X002711.SZ.Close X002712.SZ.Close X002713.SZ.Close
# 2014-01-21 15.25 27.79 NA 17.26 NA NA NA NA
# 2014-01-22 14.28 28.41 NA 16.56 NA NA NA NA
# 2014-01-23 13.65 27.78 33.62 15.95 19.83 NA 36.58 NA
# 2014-01-24 15.02 30.56 36.98 17.55 21.81 NA 40.24 NA
# 2014-01-27 14.43 31.26 40.68 18.70 23.99 26.34 44.26 NA
# 2014-01-28 14.18 30.01 44.75 17.66 25.57 28.97 48.69 NA
这利用了以下事实:如果获取失败, getSymbols(...)
将返回xts
对象或带有错误消息的字符串。
请注意, xts
对象的cbind(...)
根据索引对齐,因此它的作用类似于merge(...)
。
这将产生一个xts
对象,而不是一个数据帧。 要将其转换为data.frame,请使用:
result.df <- data.frame(date=index(result),result)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.