【问题标题】:How to define argument types for R functions?如何为 R 函数定义参数类型?
【发布时间】:2010-12-17 06:15:29
【问题描述】:

我正在编写一个 R 函数,我想确保我的 R 函数的参数属于某个类(例如,“矩阵”)。

最好的方法是什么?

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

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

我怎么能说 - 正如你在 C 中所说的那样 - function(matrix x) 表示“x 必须是 matrix 类型,如果不是,则返回错误”?

【问题讨论】:

    标签: r


    【解决方案1】:

    你可以用 is.matrix 检查它是否是一个矩阵,或者在传递参数后用 as.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)
    }
    

    【讨论】:

    • 好的,很酷。我完全没有注意到“is.matrix”。谢谢!
    • 基本上每个数据类型都有一个isas函数。
    【解决方案2】:

    为了完整性:除此之外

    is.matrix(foo) 
    

    你也可以测试

    class(foo) == "matrix" 
    

    这也适用于没有is.foo() 函数的非标准。

    【讨论】:

    • 这里必须小心,因为 R 中的对象可能有多个类。所以代码应该是“matrix”%in%class(foo)。
    【解决方案3】:

    stopifnot(is.matrix(x))

    【讨论】:

      猜你喜欢
      • 2011-11-05
      • 2021-03-18
      • 2023-03-28
      • 1970-01-01
      • 2022-06-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多