您可以将单个时间序列存储在列表中,如l
,并设置dim
属性。您也可以设置dimnames
(即行名称和列名称)。这样,您可以使用它几乎一样,如果它是一个矩阵/ data.frame
# 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
等等
+1我以前意外创建了包含列表的矩阵,但是在故意创建矩阵时,我从未想过在现有列表中设置“dim”。 – jbaums
请注意,l [[2,'b']]'指的是第二个_row_的变量'b'。在@Michael的例子中,这也是主题2,但是如果主题失灵,或者如果有一些失踪,情况可能不是这样。当然对于这个例子,'l [['2','b']]'会将'l'分到变量'b'和名为'2'的行。 – jbaums