如何在R中检查输入是否具有相同的类型和大小?

时间:2016-03-21 20:31:24

标签: r

我想编写一个只接受相同大小的矢量的函数,并且只接受相同大小的矩阵,我该如何实现呢?

我有一个如下所示的函数,但它显然不会像那样工作,因为如果我有有效的向量,我将得到一个错误,它们不是有效的矩阵,如果它们是有效的矩阵,反之亦然。但是,正如我所说,我只想检查它们是矢量还是矩阵,以及它们是否具有相同的大小,只要它们具有相同的类型和大小,我想继续使用该函数。

testFunc <- function(x, y)
{
  if (!(is.vector(x) && is.vector(y) && is.numeric(x) && is.numeric(y) && length(x) == length(y)))
    stop("Invalid input.")
  if (!(is.matrix(x) && is.matrix(y) && is.numeric(x) && is.numeric(y) && dim(x) == dim(y)))
    stop("Invalid input.")

   # Rest of the function
}

如何以最简洁的方式进行这些检查?

1 个答案:

答案 0 :(得分:0)

你的代码非常好。你可以这样做一点简洁:

if (!(is.numeric(x) && is.numeric(y) && 
      ((is.vector(x) && is.vector(y) && length(x) == length(y))||
       (is.matrix(x) && is.matrix(y) && dim(x) == dim(y)))))
stop("Invalid input.")