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

如何定义R函数的参数类型?,r,R,我正在编写一个R函数,我想确保我的R函数的参数属于某个类(例如,“矩阵”) 最好的方法是什么 假设我有一个函数“foo”,它计算矩阵的逆: foo <- function(x) { # I want to make sure x is of type "matrix" solve(x) } foo您可以使用is.matrix检查它是否为矩阵,或者在传递参数后使用as.matrix转换它: foo <- function(x) { if(!is.matrix(x))

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

最好的方法是什么

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

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

foo您可以使用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)
}

foo只是为了完整性:除了

is.matrix(foo) 
您还可以测试

class(foo) == "matrix" 

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

停止ifnot(is.matrix(x))
好的,很酷。我只是完全忘记了“is.matrix”。谢谢本质上,每个数据类型都有一个is和as函数。这里必须小心,因为R中的对象可能有多个类。因此,代码应该在%class(foo)中读取“矩阵”。