【问题标题】:How to import time series in rda/RData file using quantmod R如何使用 quantmod R 在 rda/RData 文件中导入时间序列
【发布时间】:2016-06-11 17:58:08
【问题描述】:

我正在尝试将股票时间序列保存在 rda/RData 文件中,然后在 quantmod 中调用它。

我已使用此代码将 AAPL 的股票时间序列下载并保存为 rda/RData 文件

data=getSymbols("AAPL",auto.assign=F)
save(data,file="AAPL.rda")
#Cleared environment 

现在我应该如何使用 quantmod 调用这个 rda/RData 文件。试过这个

getSymbols('AAPL',src='rda')

但它显示此错误

fr[, -1] 中的错误:维数不正确

下一个问题是如果我有多个 rda 文件(如 AAPL.rda、GOOG.rda、F.rda),我应该如何在使用 quantmod 的环境中调用这些文件。

已编辑

我错过了我想从 getSymbols() 而不是 load() 调用的这一点,因为我需要对时间序列进行更多控制

例如

 getSymbols('AAPL',src='rda',from="2010-02-02",to="2011-01-01")

【问题讨论】:

  • 保存文件后,清空环境再重复代码
  • 好的,我刚刚尝试过,但没有收到错误,所以我尝试完全关闭 R 并重新打开它,但仍然没有收到错误。这对您来说也是一个奇怪的错误。我觉得这张照片中缺少一些东西。您可以尝试使用以前从未使用过的其他股票代码吗?并确保您的工作目录是您保存它的位置,并且在您加载它时是相同的
  • 我仍然遇到同样的错误。我正在使用 ubutnu 14.04 可能是因为它

标签: r quantmod


【解决方案1】:

来自quantmod 包中的getSymbols()documentation

当前可用的 src 方法有:yahoo、google、MySQL、FRED、csv、 RData 和 oanda。

您可以执行以下操作来保存文件并在之后加载它,例如:

data <- getSymbols("AAPL",auto.assign=FALSE)
save(data,file="AAPL.rda")

(启动新的 R 会话,或清除环境等)

要检索以前保存的数据,我们可以使用

load(file = "AAPL.rda")

现在具有 AAPL 时间序列的数据集 data 再次可用。 请注意,不应load() 的输出分配给一个对象,例如data &lt;- load(file=...)。这是一个常见的错误,经常会造成混乱。此示例中的data 文件是使用load() 函数本身恢复的。

可以获取加载数据的子集,例如,使用

data['2010-02-02::2011-01-01']
#> head(data['2010-02-02::2011-01-01'])
#           AAPL.Open AAPL.High AAPL.Low AAPL.Close AAPL.Volume AAPL.Adjusted
#2010-02-02    195.91    196.32   193.38     195.86   174585600      25.75517
#2010-02-03    195.17    200.20   194.42     199.23   153832000      26.19832
#2010-02-04    196.73    198.37   191.57     192.05   189413000      25.25416
#2010-02-05    192.63    196.00   190.85     195.46   212576700      25.70257
#2010-02-08    195.69    197.88   194.00     194.12   119567700      25.52636
#2010-02-09    196.42    197.50   194.75     196.19   158221700      25.79856

编辑:

以下示例说明了如何使用.RData 文件:

saveSymbols(getSymbols("AAPL"), file.path=getwd()) #saves 'AAPL.RData' in working directory
rm(AAPL)
data <- getSymbols("AAPL", src="RData", extension="RData", auto.assign=FALSE)
#> head(data)
#           AAPL.Open AAPL.High AAPL.Low AAPL.Close AAPL.Volume AAPL.Adjusted
#2007-01-03     86.29     86.58    81.90      83.80   309579900      11.01952
#2007-01-04     84.05     85.95    83.82      85.66   211815100      11.26411
#2007-01-05     85.77     86.20    84.40      85.05   208685400      11.18389
#2007-01-08     85.96     86.53    85.28      85.47   199276700      11.23912
#2007-01-09     86.45     92.98    85.15      92.57   837324600      12.17276
#2007-01-10     94.75     97.80    93.45      97.00   738220000      12.75529

进一步编辑:

我可以确认@Hack-R 在 cmets 中所做的声明。尽管文档以一种相当隐蔽的方式对此进行了描述,但通过阅读有关getSymbols.rda() 的部分,可以清楚地看出src="rda" 选项仍然支持作为getSymbols() 的有效参数。事实上,它仍然适用于我的安装:

data <- getSymbols("AAPL",auto.assign=FALSE)
save(data,file="AAPL.rda")
rm(data)
data <- getSymbols("AAPL", src="rda", auto.assign=FALSE)

#>head(data)
#           AAPL.Open AAPL.High AAPL.Low AAPL.Close AAPL.Volume AAPL.Adjusted
#2007-01-03     86.29     86.58    81.90      83.80   309579900      11.01952
#2007-01-04     84.05     85.95    83.82      85.66   211815100      11.26411
#2007-01-05     85.77     86.20    84.40      85.05   208685400      11.18389
#2007-01-08     85.96     86.53    85.28      85.47   199276700      11.23912
#2007-01-09     86.45     92.98    85.15      92.57   837324600      12.17276
#2007-01-10     94.75     97.80    93.45      97.00   738220000      12.75529

总之,在使用 quantmod 保存、加载和操作时间序列的几种变体之后,我们似乎回到了原点:OP 中描述的错误似乎无法重现。

【讨论】:

  • 嘿,我编辑了这个问题。请看已编辑的。正如您在回答中提到的那样,RData 可用,那么您能告诉我如何使用 RData 而不是 rda
  • 嘿,我将 AAPL 重新下载为 RData 文件并尝试了此代码 getSymbols('AAPL',src='RData'),但它给出了此错误文件 AAPL.rda does not exist in ....skipping [1] "AAPL"
  • @Eka 我认为他希望您将其保存为RData 而不是.rda。虽然个人 rda 对我来说工作得很好。
  • @RHertel 如何在环境中加载它;试过这个data &lt;- new.env() getSymbols("AAPL", src = "rda", env = data, auto.assign = F) 它会加载 rda 文件,但不会将它加载到数据环境中。知道为什么会这样。我应该把这个作为另一个问题来问吗?
  • @Eka 感谢您接受我的回答。我认为就您的最后评论提出一个单独的问题可能确实更好。我通常使用auto.assign=FALSE,并且我怀疑此选项与将数据导出到特定环境不兼容,因为它将数据直接返回给调用者。但是为了确保并获得其他用户的意见,最好在新帖子中增加这个新问题的可见性。很抱歉,我无法提供更多帮助。
猜你喜欢
  • 2016-10-13
  • 2019-09-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-11-20
  • 2014-07-11
  • 2017-03-06
相关资源
最近更新 更多