我想编写一个只接受相同大小的矢量的函数,并且只接受相同大小的矩阵,我该如何实现呢?
我有一个如下所示的函数,但它显然不会像那样工作,因为如果我有有效的向量,我将得到一个错误,它们不是有效的矩阵,如果它们是有效的矩阵,反之亦然。但是,正如我所说,我只想检查它们是矢量还是矩阵,以及它们是否具有相同的大小,只要它们具有相同的类型和大小,我想继续使用该函数。
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
}
如何以最简洁的方式进行这些检查?
答案 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.")