R 将 csv 的数字列表(逗号分隔值 ie 1, 2, 3
)包装在c()
函数中,这是 R 核心库的一部分,它将 csv 的数字列表转换为向量。
这些向量看起来像 Ruby 或 Java 数组,除了这些 csv 列表被包装在c()
而不是[]
. 看起来数组实际上是向量的一个子集。这是真的吗?如果是这样,这对于数组和矩阵意味着什么?
我发现关于该主题的一次讨论指出数组是静态向量。但在 Ruby 中,数组不是静态的。在 Ruby 中,数组是向量吗?
是的,在 R 中,数组只是一个带有属性的向量,这些属性给出了数组的维度。
来自?array
:
细节:
R 中的数组可以有一个、两个或多个维度。它只是一个向量,存储有附加属性,给出维度(属性“dim”)和可选的这些维度的名称(属性“dimnames”)。
二维数组与“矩阵”相同。
一维数组通常看起来像向量,但某些函数可能以不同的方式处理:'str' 在最新版本的 R 中确实区分了它们。
'"dim"' 属性是一个长度为 1 或多个的整数向量,包含非负值:值的乘积必须与数组的长度匹配。
也许自己看这个最简单的方法是看一个向量、一个矩阵和一个更高维的数组,如下所示:
a <- array(1:12, dim=c(2,2,3))
m <- matrix(1:4, ncol=2)
v <- c(1,2)
is(a)
# [1] "array" "matrix" "structure" "vector" "vector"
is(m)
# [1] "matrix" "array" "structure" "vector"
is(v)
# [1] "numeric" "vector"
attributes(a)
# $dim
# [1] 2 2 3
attributes(m)
# $dim
# [1] 2 2
attributes(v)
# NULL
## Finally, try this
v <- 1:12
dim(v) <- c(2,2,3)
v