How to define argument types for R functions?
I am writing an R function, and I want to make sure that the argument of my R function is of a certain class (eg, "matrix").
What is the best way to开发者_运维技巧 do this?
Say I have a function "foo" which computes the inverse of a matrix:
foo <- function(x)
{
# I want to make sure x is of type "matrix"
solve(x)
}
How can I say - as you might in C - function(matrix x)
to denote that "x
must be of type matrix
, and if it isn't, then return an error"?
stopifnot(is.matrix(x))
You can either check that it's a matrix with is.matrix or else convert it with as.matrix after the parameter is passed:
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)
}
Just for completeness: besides
is.matrix(foo)
you can also test for
class(foo) == "matrix"
which also works for non-standard that do not have is.foo()
functions.
精彩评论