在R控制台中输入时:
1 + 2
我们得到答案:
[1] 3
前导[1]
是否意味着“输出是一个矩阵,此矩阵第一行中的元素是:3”?
更一般地说,这些对象是矢量,列表,单行矩阵还是单列矩阵?
1 + 2
(即3
,即只是一个数字)
c(1,-2,3,14)
A = matrix(c(1,-2,3,14),2,2)
A[1,]
:这是矩阵的第一行。它是(1,2)单行矩阵还是只是一个向量或列表?
A[,2]
:这是矩阵的第二列。它是(2,1)单列矩阵还是只是一个向量或列表? 我已经阅读了几次文档,但我想知道是否存在一条经验法则可以记住这个?
答案 0 :(得分:1)
基本上,为了检查R中的数据类型,您可以使用base
包中包含的几个函数。
现在,关注你的明确问题:
> is.vector(1 + 2)
[1] TRUE
> is.atomic(1 + 2)
[1] TRUE
> length(1 + 2)
[1] 1
因此,结果存储在长度为1的向量中。
> is.vector(c(1,-2,3,14))
[1] TRUE
> is.atomic(c(1,-2,3,14))
[1] TRUE
当c(...)
初始化一个矢量对象时,显然数据类型是一个矢量。
> is.matrix(A)
[1] TRUE
> is.vector(A)
[1] FALSE
> is.atomic(A)
[1] TRUE
> is.vector(A[1, ])
[1] TRUE
> is.atomic(A[1, ])
[1] TRUE
> is.matrix(A[1, ])
[1] FALSE
> is.vector(A[, 2])
[1] TRUE
> is.atomic(A[, 2])
[1] TRUE
> is.matrix(A[, 2])
[1] FALSE
最后,按行逐列或按列分组矩阵也会返回一个向量而不是矩阵。
要检查标量,请参阅this question。
编辑:
如@Rich Scriven所述,R中有两种类型的向量:原子和泛型向量。实际上,上面示例中使用的函数is.vector(x)
也会为列表返回TRUE
。除此之外,is.atomic(x)
仅检查原子向量,这些向量包含一种基本数据类型(逻辑,整数,实数,复数,字符或原始数据)的数据。另外,我在上面的示例中也添加了相应的is.atomic(x)
函数调用。