【问题标题】:Issue with creating a matrix in R在 R 中创建矩阵的问题
【发布时间】:2021-02-16 00:27:23
【问题描述】:

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

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

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

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

如何获得一个普通的矩阵对象? as.matrix 也将对象转换为“矩阵”“数组”

【问题讨论】:

  • 这不是错误。 ?array 告诉我们 R 中的数组可以有一个、两个或多个维度。它只是一个向量,存储有附加属性,给出维度(属性“dim”)和可选的这些维度的名称(属性“dimnames”)。二维数组和矩阵是一样的
  • 您创建objectA 然后检查objectB 的类?尽管如此,这是一个普通的矩阵对象。 "matrix" "array" 的课程阻止你做什么?
  • @Ronak Shah,对不起,我在发布之前已经重命名了对象.. 它在这里,显然忘记更改所有行.. 但结果是一样的
  • 请发布返回错误的代码。

标签: r matrix


【解决方案1】:

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

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

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

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

if (inherits(matrix_obj, "matrix")) ...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-25
    • 2019-12-18
    • 2018-12-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多