如何访问getSymbols返回的LSE数据

时间:2015-01-05 13:27:49

标签: r quantmod

我想从伦敦证券交易所获得谷歌财务的OHLC数据。我尝试过使用:

> require(quantmod)
> getSymbols("LON:DRTY", src="google")
[1] "LON:DRTY"
> head(LON:DRTY)
Error in head(LON:DRTY) : object 'LON' not found

getSymbols似乎已经返回了数据,但我无法访问它。我如何从返回的对象中实际获取数据?

实际上,我想从日本下载数据。例如:" TYO:2501" (https://www.google.com/finance?q=TYO%3A2501&ei=2aC6VOHcKsX1wAPa3YCoCg)。但是,getSymbols无法在" TYO:2501"," 2501"," TYO%3A2501"等代码下找到它。我找到了404#Not Found'或者' 400错误请求'。

> getSymbols("TYO:2502", from="2014-01-01", to="2014-05-03", src="google")

1 个答案:

答案 0 :(得分:2)

在这种情况下,getSymbols不会返回语法上有效的名称。 :是R中的二元运算符,用于创建数字序列。因此,当您键入head(LON:DRTY)时,R正在查找名为LON的对象和名为DRTY的对象,以便创建序列。例如:

> LON <- 1
> DRTY <- 10
> head(LON:DRTY)
[1] 1 2 3 4 5 6

我将在以后的版本中修复此问题,但您可以在此期间使用其中一种解决方法:

> require(quantmod)
> getSymbols("LON:DRTY",src="google")
[1] "LON:DRTY"
> # use backticks to reference the object
> head(`LON:DRTY`)
           LON:DRTY.Open LON:DRTY.High LON:DRTY.Low LON:DRTY.Close LON:DRTY.Volume
2012-08-01          0.43          0.45         0.41           0.44          410093
2012-08-02         41.25         42.75        40.00          41.50          751816
2012-08-03         41.00         44.00        41.00          42.75          582187
2012-08-06         42.00         44.41        42.00          42.50          370042
2012-08-07         42.00         44.00        40.75          42.00         1366845
2012-08-08         42.00         42.50        42.00          42.25          437467
> # manually assign the object to a "valid" name
> LON.DRTY <- getSymbols("LON:DRTY",src="google",auto.assign=FALSE)
> head(LON.DRTY)
           LON:DRTY.Open LON:DRTY.High LON:DRTY.Low LON:DRTY.Close LON:DRTY.Volume
2012-08-01          0.43          0.45         0.41           0.44          410093
2012-08-02         41.25         42.75        40.00          41.50          751816
2012-08-03         41.00         44.00        41.00          42.75          582187
2012-08-06         42.00         44.41        42.00          42.50          370042
2012-08-07         42.00         44.00        40.75          42.00         1366845
2012-08-08         42.00         42.50        42.00          42.25          437467
> # use setSymbolLookup to specify the name
> setSymbolLookup(LON.DRTY=list(name="LON:DRTY",src="google"))
> getSymbols("LON.DRTY")
[1] "LON.DRTY"
> head(LON.DRTY)
           LON:DRTY.Open LON:DRTY.High LON:DRTY.Low LON:DRTY.Close LON:DRTY.Volume
2012-08-01          0.43          0.45         0.41           0.44          410093
2012-08-02         41.25         42.75        40.00          41.50          751816
2012-08-03         41.00         44.00        41.00          42.75          582187
2012-08-06         42.00         44.41        42.00          42.50          370042
2012-08-07         42.00         44.00        40.75          42.00         1366845
2012-08-08         42.00         42.50        42.00          42.25          437467