向`as.matrix`明确提供nrow和ncol不会创建尺寸

时间:2018-09-28 01:26:42

标签: r matrix

我正在使用as.matrix()函数创建一个具有9个值的简单3x3矩阵。但是我看到的输出似乎不正确。我想念什么?

这就是我在做什么:

> s <- as.matrix(c(3,4,5,6,7,8,9,10,11),nrow = 3,ncol = 3)

我希望看到的:

> s
     [,1] [,2] [,3]
[1,]    3    6    9
[2,]    4    7   10
[3,]    5    8   11

但是我实际上看到的是

> s
      [,1]
 [1,]    3
 [2,]    4
 [3,]    5
 [4,]    6
 [5,]    7
 [6,]    8
 [7,]    9
 [8,]   10
 [9,]   11
>

我想念什么?

as.matrix()函数的文档说,nrow和ncol用于定义 所需的行数和列数 。 有指针吗?

2 个答案:

答案 0 :(得分:3)

as.matrix没有nrowncol参数。您实际上需要的是matrix。选中?as.matrix

matrix(c(3,4,5,6,7,8,9,10,11),nrow = 3,ncol = 3) 

#     [,1] [,2] [,3]
#[1,]    3    6    9
#[2,]    4    7   10
#[3,]    5    8   11

答案 1 :(得分:3)

您提供了一个向量作为as.matrix的第一个参数,并且帮助页面(Details部分)说:

  

as.matrix的默认方法调用as.vector(x),因此例如强制因素到字符向量。

     

强制向量时,它会生成一个单列矩阵,并将向量的名称(如果有)提升为矩阵的行名。

使用情况部分实际上未在ncol的参数列表中包含nrowas.matrix。他们只是被忽略。要查看的代码是:

as.matrix.default

如果第一个参数包含矩阵维,则该代码将保留矩阵维。

我发现使用as.matrix是使print产生原子字符向量的左对齐一列的好方法。