Как определить типы аргументов для функций R? - PullRequest
12 голосов
/ 17 ноября 2009

Я пишу функцию R и хочу убедиться, что аргумент моей функции R относится к определенному классу (например, «матрица»).

Каков наилучший способ сделать это?

Скажем, у меня есть функция "foo", которая вычисляет обратную матрицу:

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

Как я могу сказать - как вы могли бы в C - function(matrix x) обозначить, что "x должен иметь тип matrix, а если это не так, вернуть ошибку"?

Ответы [ 3 ]

14 голосов
/ 17 ноября 2009

Вы можете либо проверить, что это матрица с 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)
}
12 голосов
/ 17 ноября 2009

stopifnot(is.matrix(x))

3 голосов
/ 17 ноября 2009

Только для полноты: помимо

is.matrix(foo) 

Вы также можете проверить на

class(foo) == "matrix" 

, который также работает для нестандартных функций, не имеющих is.foo() функций.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...