将 xts 对象从 FRED 转换为 data.table

Converting xts objects from FRED to data.table

我有一个来自 FRED 的 xts 对象,我想将其转换为 data.table(或数据帧)对象。相关代码为:

library(data.table)
library(quantmod)
library(Quandl)
library(zoo)
library(knitr)
library(ggplot2)

dataTableTemp <- getSymbols('DJIA', src='FRED')
dataTableTemp <- as.data.table(dataTableTemp)

这是它获取的 xts 对象的内容:

             DJIA
2007-08-08   13657.86
2007-08-09   13270.68
2007-08-10   13239.54
...          ...          

str(DJIA),这是它下载时给的名字,给出

> str(DJIA)
An ‘xts’ object on 2007-08-08/2017-08-08 containing:
  Data: num [1:2610, 1] 13658 13271 13240 13237 13029 ...
 - attr(*, "dimnames")=List of 2
  ..$ : NULL
  ..$ : chr "DJIA"
  Indexed by objects of class: [Date] TZ: UTC
  xts Attributes:  
List of 2
 $ src    : chr "FRED"
 $ updated: POSIXct[1:1], format: "2017-08-09 09:41:49"

这样下去几千行。然而,当我用第二行代码将它转换为 data.table 时,这就是全部(table 格式):

             dataTableTemp
1            DJIA

除了

之外,我还尝试使用 ggplot2 中的 fortify(dataTableTemp)

dataTableTemp <- data.frame(date=index(dataTableTemp), coredata(dataTableTemp)),甚至 tribble() 方法,但其中 none 似乎有效。我应该怎么做才能将其转换为 dataframe/data.table?

如有任何帮助,我们将不胜感激。谢谢。

如果您调整getSymbols中的auto.assign参数,您可以得到您期望的结果:

# Note the auto.assign = FALSE parameter specification (this will avoid assigning the data to JDIA in the global environment.:

dataTableTemp <- getSymbols('DJIA', src='FRED', auto.assign = FALSE)
x = data.table("date" = index(dataTableTemp), coredata(dataTableTemp))

让其他人知道这个问题是如何解决的:

getSymbols('DJIA', src='FRED') 
dataTableTemp <- as.data.table(DJIA)