【问题标题】:Passing a matrix as an parameter to a function in R programming language [closed]将矩阵作为参数传递给R编程语言中的函数[关闭]
【发布时间】:2020-07-31 02:18:30
【问题描述】:

是否可以将整个(方形)矩阵作为 R 中函数的参数传递?

我的意思是,我想要的是在运行程序时,用户将在 R 控制台中创建他/她想要的矩阵(比如A),如果函数的名称是cdecom(由me) ,用户将写入cdecom(A) 以获得所需的输出。用户输入的可能演示如下:

A <- matrix( 1:25 , nrow=5 , byrow=TRUE)
cdecom(A)

这有可能吗?提前致谢。 (如果我的问题不清楚,请参阅第 3 条评论)

【问题讨论】:

  • 我对你到底在问什么有点困惑。将矩阵作为参数的函数不计其数,例如diag()
  • 基本上cdecom这个函数是我自己创建的。当我在写 cdecom &lt;- function(mat) 时,我需要让 R 控制台知道 mat 实际上是一个矩阵,因为我在身体内部对 mat 使用矩阵运算。我如何让 R 控制台知道这一点?

标签: r function matrix arguments


【解决方案1】:

也许您可以在您的函数cdecom 中使用class(A)=="matrix"stopifnot,如下所示

cdecom <- function(A) {
  stopifnot(class(A)=="matrix")
  ...
}

【讨论】:

  • 那么,在函数内部,我可以编写用于矩阵运算的函数吗?例如,我可以在函数体内使用det(A)A[1,n] 吗?
  • @JRC 如果A 是一个矩阵,那么stopifnot(class(A)=="matrix") 行将被跳过,这样您就可以进行下一步,例如det(A)A[1,n]。否则会触发stopifnot(class(A)=="matrix"),函数退出
  • 我在想如果我在函数内部写mat &lt;- as.matrix(mat),会有帮助吗?
  • 我想我的问题已经解决了。谢谢。
  • @JRC as.matrix 仅在您知道 mat 的类可以转换为 matrix 时才有效。如果没有,那么mat &lt;- as.matrix(mat) 可能会弹出一个错误,使您无法继续前进
猜你喜欢
  • 2011-06-11
  • 2013-09-10
  • 1970-01-01
  • 2020-05-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多