3
我发现了一些关于this线程中xts字段表示的信息,但我仍不清楚为什么xts是索引+矩阵。为什么不是索引+数据框?在使用因子和数字列时,这不会让您有更大的灵活性吗?为什么将xts实现为矩阵而不是数据框?
一旦我将数据加载到文本文件中,大部分工作就是对全套或时间序列的子集执行数字操作。为此,索引工作得很好,但我不得不通过诸如data.frame(data.matrix(myxts))
之类的调用来提取因子和数字列。
另外我发现使用$符号比矩阵索引更方便,虽然这是一个非常不同的问题。例如:
lm(myxts$Res ~ myxts$ThisVar + myxts$ThatVar)
是很容易,
lm(myxts[, "Res"] ~ myxts[, "ThisVar"] + myxts[, "ThatVar"]).
这个回答我的问题,而是如何昂贵是data.matrix()调用处理数字?它是否不能达到在字符串中使用字符矩阵与数据框的目的,从而获得更好的性能? – 2012-01-14 15:27:12
我在挠我的脑袋。矩阵(任何类型)中都没有因子变量,因为矩阵对象会除去名称和维度之外的所有属性。我相信你错过了Joshua所做的一点:你不需要在xts对象周围包装任何'data.frame'或'data.matrix'来将它的数值变成'lm',当它使用'与'或作为数据参数传递给'lm'。 – 2012-01-14 15:37:10
另外'动物园'被设计为一个增强的ts类(在R的核心),而这个类又是基于矩阵的。看动物园设计小插曲:http://cran.r-project.org/web/packages/zoo/vignettes/zoo-design.pdf。请注意动物园支持'$'。例如'库(动物园); z < - zoo(cbind(a = 1:3,b = 4:6)); z $ a'。顺便说一下,矩阵和数据帧之间的性能差异非常显着。 – 2012-01-14 15:42:59