我已经找到了有关this线程中xts字段表示形式的一些信息,但我仍然不清楚为什么xts是索引+矩阵。为什么不使用索引+数据框?使用因子和数字列时,这样是否可以提供更大的灵活性?

在将数据加载到xts中后,大部分工作将包括对整个序列或时间序列的子集执行数字运算。为此,索引工作得很好,但是我不得不经过像data.frame(data.matrix(myxts))这样的调用才能提取因子和数值列。

另外,我发现使用$表示法比矩阵索引更方便,尽管这确实是一个不同的问题。例如:

lm(myxts$Res ~ myxts$ThisVar + myxts$ThatVar)

比写容易
lm(myxts[, "Res"] ~ myxts[, "ThisVar"] + myxts[, "ThatVar"]).

最佳答案

xts使用矩阵而不是data.frame是因为:

  • 它是Zoo的子类,这就是Zoo对象的结构以及
  • 矩阵对象比data.frames具有更好的性能。

  • 您的第二个问题可以通过使用data=lm参数来解决,或更普遍地,通过使用with来解决:
    with(myxts, lm(Res ~ ThisVar + ThatVar))
    

    10-06 11:15