2009-11-16 82 views
11

我正在写一个R函数,我想确保R函数的参数是某个类(例如“矩阵”)的参数。如何定义R函数的参数类型?

这样做的最好方法是什么?

说我有一个“foo”函数,它计算矩阵的逆:

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

我怎么能说 - 你可能用C - function(matrix x)来表示“x必须matrix类型,如果不是,那么返回一个错误“?

回答

13

您可以检查它与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) 
} 
+0

好的,很酷。我完全没有注意到“is.matrix”。谢谢! – poundifdef 2009-11-16 23:45:26

+0

基本上每个数据类型都有一个* is *和* as *函数。 – Shane 2009-11-16 23:47:20

3

只是为了完整性:除了

is.matrix(foo) 

你也可以测试为

class(foo) == "matrix" 

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

+5

在这里必须小心,因为R中的对象可能有多个类。所以代码应该读取%class(foo)中的“matrix”%。 – 2009-11-17 02:09:11

+0

同意,谢谢! – 2009-11-17 02:23:59

+3

或者使用'inherits' – hadley 2009-11-17 04:02:28

12

stopifnot(is.matrix(x))

相关问题