我正在尝试解决R程序中的两个主要问题。
首先,我需要创建一种矩阵结构,为不同的个人(行)存储不同变量(列)的值。
主要的问题是,在每对行列中,我需要有一个时间序列形式的观测向量。因为每个不同变量中的时间序列不是按顺序采样的,所以不同的时间序列是不规则的。
我正在考虑使用行名和colnames作为访问矩阵中项目的键。
不知道这是否是我所需要的最佳结构。正在使用数据帧,但有人建议移动到矩阵,因为它应该存储大量数据(数据流)。
您可以将单个时间序列存储在列表中,例如l
,并在其上设置dim
属性。您也可以设置dimnames
(即行名和列名)。有了它,你几乎可以像使用矩阵/数据帧一样使用它
# Generate length 15 vectors for 10 subjects
l <- replicate(10, list(rnorm(15)))
dim(l) <- c(5, 2)
dimnames(l) <- list(subject=1:5, variable=c("a", "b"))
l
## variable
## subject a b
## 1 Numeric,15 Numeric,15
## 2 Numeric,15 Numeric,15
## 3 Numeric,15 Numeric,15
## 4 Numeric,15 Numeric,15
## 5 Numeric,15 Numeric,15
现在您可以:
l[[1,1]] # time series for subject 1, var 1
## [1] -0.02425 0.88986 0.36260 -1.78774 -1.48874 -1.46750 0.38329
## [8] 0.18573 -1.65675 0.59374 0.81669 1.06867 -1.71847 0.81889
## [15] 0.10796
或
l[[2, "b"]] # time series for subject 2, var "b"
## [1] 0.45616 -0.67563 -1.42116 -0.42621 0.51648 0.35147 0.68243
## [8] 1.17581 -0.16696 0.77492 -1.76446 1.50580 0.06075 0.37734
## [15] -0.92797
等等。。。