首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用R调用quantmod中的代码列表

使用R调用quantmod中的代码列表
EN

Stack Overflow用户
提问于 2014-11-09 23:04:26
回答 1查看 1.1K关注 0票数 0

我想从一份中国股票清单中获得一些数据,这些数据使用的是定量模型。

清单如下:

002705.SZ -- 002730.SZ (在这个序列中,有一些与Null股票匹配的代码,例如,没有股票名为002720.SZ)

代码语言:javascript
复制
300357.SZ -- 300402.SZ
603188.SS
603609.SS
603288.SS
603306.SS
603369.SS

我想写一个循环来运行所有这些股票,从每个股票中获取数据,并将它们保存到一个数据框架中。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-11-09 23:42:17

这应该能让你开始。

代码语言:javascript
复制
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,请使用:

代码语言:javascript
复制
result.df <- data.frame(date=index(result),result)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26834365

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档