
128
|
第
5
章
#>
#> , , 2
#>
#> [,1] [,2] [,3]
#> [1,] 7 9 11
#> [2,] 8 10 12
注意,由于不可能在二维介质中输出三维结构,R 软件一次仅输出结构的一个“片段”。
让我们感到非常奇怪的是,仅仅将 dim 属性赋予一个列表。就能将该列表转换成矩阵。
这变得更加奇怪了。
考虑到列表可以是异质的(混合类型)。我们可以从一个异质的列表开始,赋予它维度,
从而创建一个异质矩阵。以下代码段创建一个由数值和字符数据组成的矩阵:
C <- list(1, 2, 3, "X", "Y", "Z")
dim(C) <- c(2, 3)
print(C)
#> [,1] [,2] [,3]
#> [1,] 1 3 "Y"
#> [2,] 2 "X" "Z"
对我们来说,这很奇怪,因为我们通常认为矩阵纯粹是数值的,而不是非数值和字母的
混合。R 软件没有这种限制。
出现一个异质矩阵的可能性看似有种强大而不可思议的魅力。然而,当你使用矩阵进行
标准的矩阵运算时,会产生问题。例如,当矩阵 C(来自前一个例子)用于矩阵乘法时
会发生什么?如果将其转换为数据框会发生什么?这时候,会得到很奇怪的答案。
在本书中,我们通常忽略异质矩阵这一“病态”情况。假设你应用的是一个简单的、纯数值
的矩阵。如果矩阵包含混合数据,某些涉及矩阵的方法可能会产生奇怪的效果(或者根本没
有结果输出)。例如,将这样的混合矩阵转换成向量或数据框时会出现问题(参见 5.29 节 )。
因子
因子(factor)看起来和向量相似,但它具有特殊的性质。 ...