【问题标题】:R_converting a list to a matrixR_将列表转换为矩阵
【发布时间】:2014-05-07 19:33:16
【问题描述】:

我有一个四年数据的时间序列。我想在几个月内做一个 for 循环操作。我正在使用“xts”包。这就是我的原始数据框('obs')的前四行的样子

           t       V2     V3     V4     V5     V6     V7     V8     V9     
1 2009-09-25 18:00:00 32.965 32.965 33.525 32.965 32.965 32.965 32.965  
2 2009-09-26 06:00:00 32.965 32.965 32.965 32.965 31.853 32.407 31.301 
3 2009-09-26 18:00:00 31.853 31.853 31.853 32.407 31.301 30.752 31.301  
4 2009-09-27 06:00:00 29.687 29.194 30.752 28.707 27.750 27.279 27.279  

首先,我使用

将数据系列拆分为月度数据
obsl <- split(obs, f = "months", drop=FALSE, k = 1)

现在我在一个列表中列出了所有月度数据系列。我想使用 obsl[i] 'i' 作为第 i 个月列表来调用每个月度列表,并将此列表转换为月度数据系列矩阵。 例如,这是 obsl[2] 的输出,它是一个列表

                          V2      V3      V4      V5      V6      V7      V8      V9     
 2009-10-01 06:00:00  25.900  25.900  25.900  26.355  26.814  25.900  25.900  25.451  
 2009-10-01 18:00:00  25.900  25.900  25.900  25.007  25.007  25.007  25.900  25.451  
 2009-10-02 06:00:00  25.007  25.007  25.007  25.007  25.007  25.007  25.007  25.007  
 2009-10-02 18:00:00  25.007  25.007  25.007  25.007  25.900  25.007  24.136  24.569  



 2009-10-31 18:00:00  36.950  37.531  38.115  38.702  39.884  40.480  41.681  42.286  

但我不确定这是否是正确而优雅的方式。另外我不知道如何将列表转换为具有原始矩阵形式的矩阵(即第一个列时间戳和其余的 - 数字)。有人可以帮忙吗?

【问题讨论】:

  • 据我所知,obsl 是“data.frames”的“列表”?您究竟想对“列表”中的每个 element-data.frame 应用什么?也许,您可以添加一个示例“列表”和相应的输出?
  • 我添加了样本列表@alexis_laz。是的。 obsl 是 xts 对象的列表,我想在每月矩阵上应用一个长的“for-loop”。但我有每月的清单。我不知道如何从这里开始。
  • 嗯,我不确定,但也许你 - 确实 - 卡在 [[[ 之间的区别中?例如。如果您使用obsl[[2]],您应该得到列表的第二个元素,即“data.frame”(而不是“矩阵”)。除此之外,您可能想看看?lapply

标签: r matrix xts


【解决方案1】:

要从xts 对象中的list 转到单个xts 对象,您可以使用do.call(rbind, ...) 成语

obs <- getSymbols("SPY", from="2013-01-01", to="2013-12-31", src="yahoo", auto.assign=FALSE)
obsl <- split(obs, "months")
do.call(rbind, obsl)

最后一行相当于rbind(obsl[[1]], obsl[[2]], ..., obsl[[12]])

如果太慢,可以试试do.call.rbind

library(qmao)  # R-Forge
do.call.rbind(obsl)

【讨论】:

    猜你喜欢
    • 2011-01-29
    • 1970-01-01
    • 2010-12-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-27
    • 2017-05-17
    相关资源
    最近更新 更多