Как определить типы аргументов для R-функций?
Я пишу функцию R, и я хочу убедиться, что аргумент моей R-функции имеет определенный класс (например, "matrix" ).
Каков наилучший способ сделать это?
Скажем, у меня есть функция "foo", которая вычисляет обратную матрицу:
foo <- function(x)
{
# I want to make sure x is of type "matrix"
solve(x)
}
Как я могу сказать - как вы могли бы в C - function(matrix x)
обозначить, что "x
должен иметь тип matrix
, а если это не так, верните ошибку"?
Ответы
Ответ 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)
}
Ответ 2
stopifnot(is.matrix(x))
Ответ 3
Только для полноты: кроме
is.matrix(foo)
вы также можете проверить
class(foo) == "matrix"
который также работает для нестандартных, которые не имеют функций is.foo()
.