library(quantmod)
kospi = c('000020','000030','000040')
koslist = as.character(kospi)
koslist
startDate <<- as.Date("2017-01-01")
endDate <<- as.Date("2017-01-05")
for(i in koslist){
assign('m','i',envir = .GlobalEnv) # set m Global global variable #Problem1
tt = getSymbols(m, src = "google", from = startDate, to = endDate,env=NULL)
ff = data.frame(tt)
kk = ff$I.Close #Problem2
print(kk)
}
我想让语句代码使用getSymbols函数(获取股票信息的函数)。但我遇到了两个问题。
我无法在for语句中设置Global变量。如果我没有设置全局变量,函数会给我一个错误的数据。但是我仍然得到了错误的数据,但我设置了全局变量。我不知道问题。
即使我解决了问题1,我也会遇到列名问题。雅虎给了我这样的数据。每个列名都有'X'(+全局变量(stockcode))。我不知道声明'全局变量到列名。
X005930.Open X005930.High X005930.Low X005930.Close
2017-01-02 1799000 1812000 1794000 1805000
2017-01-03 1814000 1831000 1801000 1824000
2017-01-04 1825000 1826000 1805000 1808000
2017-01-05 1803000 1803000 1777000 1778000
我不确定这样的做法。我想重复一下getsymbols函数。几个星期我一直在努力。请让我知道解决方案。
答案 0 :(得分:0)
您的脚本存在多个问题。在你的陈述中:
assign('m','i',envir = .GlobalEnv)
您要将文字字符串'i'
分配给变量m
,而不是股票代码。其次,getSymbols
中的第一个参数是股票代码。 000020,000030或000040不是有效的股票代码。
试试这个:
library(quantmod)
symbol_list = c('AAPL','GOOGL','MSFT')
startDate <<- as.Date("2017-01-01")
endDate <<- as.Date("2017-01-05")
for(i in symbol_list){
tt = getSymbols(i, src = "google", from = startDate, to = endDate,env=NULL)
print(tt)
}