代码之家  ›  专栏  ›  技术社区  ›  poundifdef

如何定义r函数的参数类型?

r
  •  12
  • poundifdef  · 技术社区  · 15 年前

    我正在编写一个r函数,我想确保r函数的参数是某个类(例如,“matrix”)。

    最好的方法是什么?

    假设我有一个函数“foo”,它计算矩阵的倒数:

    foo <- function(x)
    {
       # I want to make sure x is of type "matrix"
       solve(x)
    }
    

    我怎么说呢-就像你在C里说的那样- function(matrix x) 表示这一点” x 必须是类型 matrix ,如果不是,则返回错误“?

    3 回复  |  直到 15 年前
        1
  •  14
  •   Shane    15 年前

    您可以检查它是否是带有is.matrix的矩阵,或者在传递参数后将其转换为a s.matrix:

    foo <- function(x)
    {
       if(!is.matrix(x)) stop("x must be a matrix")
       # I want to make sure x is of type "matrix"
       solve(x)
    }
    
        2
  •  12
  •   hadley    15 年前

    stopifnot(is.matrix(x))

        3
  •  3
  •   Dirk is no longer here    15 年前

    只是为了完整:另外

    is.matrix(foo) 
    

    你也可以测试

    class(foo) == "matrix" 
    

    也适用于非标准的 is.foo() 功能。