我试图使用 quantmod
包获取印度NSE指数的1632只股票的数据 . 我可以单独下载股票;然而,当我遍历所有股票时,我正在暂停 . 如何循环 getSymbols
函数以下载所需数据?
报告以下错误:
错误:两次尝试后'20MICRONS.NS'下载失败 . 错误消息:HTTP错误404. 5.停止(符号 . 名称,“两次尝试后下载失败 . 错误”,“消息:\ n”,attr(dl,“条件”)$ message,call . = FALSE)4 . getSymbols.yahoo(Symbols =“'20MICRONS.NS'”,env =,verbose = FALSE,warnings = TRUE,auto.assign = TRUE)3 . do.call(paste(“getSymbols . ”,symbol.source,sep = “”),list(符号= current.symbols,env = env,verbose = verbose,warnings = warnings,auto.assign = auto.assign,...))2 . getSymbols(as.character(x),src = “雅虎”)1 . f(符号[i])
MyData <- read.csv(file="C:/Documents/EQUITY_L.csv", header=TRUE)
Symbol <- MyData$SYMBOL
f <- function(x) { getSymbols(as.character(x), src='yahoo') }
for (i in 1:1632) { f(Symbol[i]) }
1 回答
好的,现在我明白了......
首先从以下网址下载符号:https://www.nseindia.com/corporates/content/securities_info.htm这是页面上列出的第一个文件 .
看来NSE文件中的每个符号都需要添加".NS"后缀 . 这就是为什么你可以单独下载股票,但是当你将文件的符号列传递给
getSymbols
时它会失败 .我还创建了一个新环境,将每个库存转储到您的全球环境中并使其易于管理 .
最后,将
NSE_Symbols
传递给quantmodsgetSymbols
函数以获取每日数据 . 我喜欢使用sapply
加上try
,这样如果你遇到一个坏符号,HTTP error 404
将不会停止下载剩余的符号 .接下来,测试并找出哪些符号没有下载 . 我能够得到除17岁以外的所有人 .
成功下载的符号将整齐地包含在
NSE_stocks
环境中 .祝好运,
r quantmod