在R中的用户定义函数中,如何检查R中的输入格式是否正确?

在R中的用户定义函数中,如何检查R中的输入格式是否正确?,r,arguments,R,Arguments,如果我的函数在R中输入了(x,y,z),我想写一行代码来确保x的数据格式正确 i、 e.x只是一个实数,而不是向量或列表之类的任何东西。我想代码应该是这样的 if ( ... ){stop("x must be a real number")} 我想知道括号内是什么,而不是。 原因是如果我写一个向量,程序只需要向量的第一个分量作为输入。R将对此发出警告,但我希望立即停止该程序。如果您的参数长度为1,且为实数,则希望“停止” 您可以使用stopifnot foo <- function(x

如果我的函数在R中输入了
(x,y,z)
,我想写一行代码来确保
x
的数据格式正确

i、 e.
x
只是一个实数,而不是向量或列表之类的任何东西。我想代码应该是这样的

if ( ... ){stop("x must be a real number")}
我想知道括号内是什么,而不是

原因是如果我写一个向量,程序只需要向量的第一个分量作为输入。R将对此发出警告,但我希望立即停止该程序。

如果您的参数长度为1,且为实数,则希望“停止”

您可以使用
stopifnot

foo <- function(x, y, z) {
  stopifnot(length(x)==1L & is.numeric(x))
 }
foo <- function(x, y, z){
  if(!(length(x)==1L & is.numeric(x))) { stop("x must be a real number")}
}
 foo <- function(x, y, z) {
      stopifnot(length(x)==1L , is.numeric(x))
     }

foo('a')
# Error: is.numeric(x) is not TRUE 
foo(c(1,2))
# Error: length(x) == 1L is not TRUE