2

R 将 csv 的数字列表(逗号分隔值 ie 1, 2, 3)包装在c()函数中,这是 R 核心库的一部分,它将 csv 的数字列表转换为向量。

这些向量看起来像 Ruby 或 Java 数组,除了这些 csv 列表被包装在c()而不是[]. 看起来数组实际上是向量的一个子集。这是真的吗?如果是这样,这对于数组和矩阵意味着什么?

我发现关于该主题的一次讨论指出数组是静态向量。但在 Ruby 中,数组不是静态的。在 Ruby 中,数组是向量吗?

4

1 回答 1

3

是的,在 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
于 2012-10-05T20:20:18.443 回答