【发布时间】:2012-09-27 00:47:25
【问题描述】:
R 将 csv 的数字列表(逗号分隔值,即 1, 2, 3)包装在 c() 函数中,这是 R 核心库的一部分,它将 csv 的数字列表转换为向量。
这些向量看起来像 Ruby 或 Java 数组,除了这些 csv 列表被包裹在 c() 而不是 [] 中。看起来数组实际上是向量的一个子集。这是真的吗?如果是这样,这对数组和矩阵意味着什么?
我发现关于该主题的一次讨论指出数组是静态向量。但在 Ruby 中,数组不是静态的。在 Ruby 中,数组是向量?
【问题讨论】:
-
在我见过的实例中,Vector 是 Array(一维数组)的子集,而不是相反。
-
这个问题对我来说似乎不清楚。您是在问为什么 R 不调用这些数组,或者为什么其他语言不调用这些向量?请注意,每种语言都有自己的实现细节,这些细节并不总是与其他语言对其类型的命名方式相匹配。 (在 Python 中,默认容器称为
list,但实际上是用(可调整大小的)数组实现的)。 -
向量在物理学中被定义为具有方向和大小的“事物”。现在我还没有深入研究物理学(我是一名化学专家),但是这个定义,这是我目前对向量的唯一定义,似乎不适用于这里。如果您对这个问题有任何困惑,那是因为我也有些困惑。
-
根据我刚才的粗略研究,“向量”和“一维数组”似乎相互指向。但是多维数组是什么,一个矩阵?因此,至少一开始,这里似乎存在一些并行性。主要区别在于静态与动态组件,这在 ruby 中是一个有争议的问题。在 ruby 和其他解释语言而不是编译语言中,数组和向量之间的界限似乎模糊了很多
-
听起来你已经习惯了数学对象上下文中的“向量”和“数组”(或矩阵)的概念。重要的是要记住,从计算机的角度来看,“额外维度”的概念在将值存储在内存中时几乎没有意义。因此,大多数语言会在内部将高维数组存储为单个值列表,并使用一些额外的簿记信息简单地跟踪行/列。