我了解到a vector is a sequence of data elements of the same basic type.
然后我们会在下面的代码中调用a
(因为它包含数字和字符):
a = c(1,"b")
is.vector(a)
[1] TRUE
矢量错误的定义是什么?我提到this tutorial.
答案 0 :(得分:6)
本教程简化并可能导致混淆。它的定义描述了“基本矢量类型”,但也有“通用矢量”。
来自language definition(你应该研究):
2.1.1载体
可以将载体视为包含数据的连续细胞。细胞 通过索引操作,如x [5]访问。更多细节 在索引中给出。
R有六种基本('原子')矢量类型:逻辑,整数,真实, 复杂,字符串(或字符)和原始。模式和存储模式 对于不同的矢量类型,请参见下表。
typeof mode storage.mode
logical logical logical
integer numeric integer
double numeric double
complex complex complex
character character character
raw raw raw
单个数字,例如4.2, 和字符串,如“四点二”仍是向量,长度为1; 没有更基本的类型。长度为零的矢量是可能的 (并且很有用)。
2.1.2列表
列表(“通用向量”)是另一种数据存储。列表有 元素,每个元素都可以包含任何类型的R. 对象,即列表的元素不必相同 类型。列表元素通过三种不同的索引进行访问 操作。这些在索引中有详细解释。
列表是向量,基本向量类型称为 原子向量,其中有必要排除列表。
来自help("is.vector")
:
如果mode =“any”,则is.vector可以为原子模式list返回TRUE 和表达。对于任何模式,如果x有任何模式,它将返回FALSE 除名称外的属性。 [...]
(expression
基本上是list
。)
请注意,因素不是矢量; is.vector返回FALSE,as.vector将一个因子转换为mode =“any”的字符向量。
最后,正如@Henrik指出的那样,c
强制所有相同类型的参数。
答案 1 :(得分:0)
实际上,在你的例子中," 1"将被视为R的角色。
A< -C(1" B&#34) typeof运算(一个[1]) [1]"字符"