我正在使用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用于定义 所需的行数和列数 。 有指针吗?
答案 0 :(得分:3)
as.matrix
没有nrow
和ncol
参数。您实际上需要的是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
的参数列表中包含nrow
或as.matrix
。他们只是被忽略。要查看的代码是:
as.matrix.default
如果第一个参数包含矩阵维,则该代码将保留矩阵维。
我发现使用as.matrix
是使print
产生原子字符向量的左对齐一列的好方法。