我想从一份中国股票清单中获得一些数据,这些数据使用的是定量模型。
清单如下:
002705.SZ -- 002730.SZ (在这个序列中,有一些与Null股票匹配的代码,例如,没有股票名为002720.SZ)
300357.SZ -- 300402.SZ
603188.SS
603609.SS
603288.SS
603306.SS
603369.SS我想写一个循环来运行所有这些股票,从每个股票中获取数据,并将它们保存到一个数据框架中。
发布于 2014-11-09 23:42:17
这应该能让你开始。
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对象,或者在提取失败时返回带有错误消息的字符串。
注意,cbind(...)用于xts对象是根据索引对齐的,因此它的作用类似于merge(...)。
这会产生一个xts对象,而不是一个数据框架。若要将其转换为data.frame,请使用:
result.df <- data.frame(date=index(result),result)https://stackoverflow.com/questions/26834365
复制相似问题