向量与列表对比单行矩阵与单列矩阵与R

时间:2017-10-01 18:16:52

标签: r matrix vector

在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)单列矩阵还是只是一个向量或列表?

我已经阅读了几次文档,但我想知道是否存在一条经验法则可以记住这个?

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)函数调用。