首页 > 解决方案 > 诊断错误:当 x 是矩阵时,无法指定 nrow 或 ncol

问题描述

diag(nrow(V) * tausq, nrow = ncol(V), ncol = ncol(V)) 中的错误:当“x”是矩阵时,不能指定“nrow”或“ncol”

这是我尝试运行时遇到的错误

D <- diag(nrow(V)*tausq, nrow=ncol(V), ncol=ncol(V))

这是我编写的函数的一部分。

它是函数的第一行,V 是一个矩阵,它是参数的一部分。

这个错误是什么意思?

标签: r

解决方案


?diag中,您可以读到该函数做了两件事之一——它要么提取传递的矩阵的主对角线,要么构造一个新的对角线矩阵。如果您尝试提取矩阵的主对角线(通过将矩阵作为第一个参数传递给diag),则不能将nrowandncol参数传递给diag函数。

该错误告诉您代码中显然nrow(V)*tausq是一个矩阵 - 因为nrow(V)是一个常数,我们得出结论它tausq必须是一个矩阵。结果,由于设置nrowncol.

长话短说——你似乎假设nrow(V)*tausq是一个常数,但实际上它是一个矩阵。您需要转换tausq为常量才能按照您的意愿进行操作。


推荐阅读