1

所以我在 R 中创建矩阵时遇到问题。我的笔记本电脑崩溃了,最近重新安装了 Rstudio(以防万一)。

我使用了一个非常基本的代码,但是创建的对象是一个“矩阵”“数组”。即使那不是我告诉 R 做的。

这就是我所做的加上我得到的结果。

> objectA <- matrix(nrow=135, ncol = 135, data = 0)
> class(objectA)
[1] "matrix" "array" 

如何获得正常的矩阵对象?as.matrix 也将对象转换为“矩阵”“数组”

4

1 回答 1

4

这是 R 4.0.0 中的一个更改——请参阅https://cran.r-project.org/doc/manuals/r-release/NEWS.html中该版本的第二个条目:

  • 矩阵对象现在也继承自类“array”,例如,class(diag(1)) 是 c("matrix", "array")。假设 class(matrix_obj)) 的长度为 1,这会错误地使代码无效。

    现在为矩阵对象调度了类“array”的 S3 方法。

以前检查类是否等于特定值是不好的形式,现在它不起作用。您(或他们的作者)将需要修复下游测试。适用于新旧版本的测试是

if (inherits(matrix_obj, "matrix")) ...
于 2020-11-03T11:41:14.087 回答