如何使用for语句实现getsymbols函数?

时间:2017-07-06 01:11:18

标签: r

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函数(获取股票信息的函数)。但我遇到了两个问题。

  1. 我无法在for语句中设置Global变量。如果我没有设置全局变量,函数会给我一个错误的数据。但是我仍然得到了错误的数据,但我设置了全局变量。我不知道问题。

  2. 即使我解决了问题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
    
  3. 我不确定这样的做法。我想重复一下getsymbols函数。几个星期我一直在努力。请让我知道解决方案。

1 个答案:

答案 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)
}