为什么将xts实现为矩阵而不是数据框?

时间:2012-01-14 14:50:25

标签: r xts

我在this线程中找到了一些关于xts字段表示的信息,但我还不清楚为什么xts是索引+矩阵。为什么不是索引+数据框?在使用因子和数字列时,这是否会提供更大的灵活性?

一旦我在xts中加载数据,大多数工作都包括对整个集合或时间序列的子集执行数值运算。为此,索引工作得很好,但我被迫通过data.frame(data.matrix(myxts))之类的调用来提取因子和数字列。

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

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

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

1 个答案:

答案 0 :(得分:6)

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

  1. 它是动物园的子类,这就是动物园对象的结构,
  2. 矩阵对象比data.frames具有更好的性能。
  3. 您的第二个问题可以通过data=使用lm参数来解决,或者更一般地说,使用with

    with(myxts, lm(Res ~ ThisVar + ThatVar))