为什么类函数不将向量视为R中的向量?

时间:2019-06-28 00:25:21

标签: r

我正在学习post

作者声称这是一个载体

a <- c(1,2,5.3,6,-2,4) # numeric vector

但是类函数不认为它是向量

> class(a)
[1] "numeric"

对于矩阵,一切顺利。

> a = matrix(1:6, nrow = 2, ncol = 3)
> class(a)
[1] "matrix"

那是为什么?

2 个答案:

答案 0 :(得分:5)

R中的所有基本类型(例如numericcharacter等)都是向量。即使是像3这样的单个元素,实际上也是长度为1的向量。因此,"numeric"隐含地是数字向量。

答案 1 :(得分:3)

您的a对象是向量:

is.vector(a)
[1] TRUE

在R中,向量一词更为笼统,大多数数学家认为不是向量的许多数据对象也将被认为是这样的:

is.vector( list(a=2, b=3, list(d=4) ) )
[1] TRUE

请参阅a prior answer,以了解什么是向量,而不是向量。您可以将“向量”视为超类。实际上,属性的存在或不存在会在R中从非矢量状态切换到矢量状态。对于R矩阵对象,是导致测试失败的维度属性。

is.vector( matrix(1:4, 2,2) )
[1] FALSE

有些语言对象也可以通过is.vector测试进行验证:

 is.vector( expression(a,b) )
[1] TRUE