Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 我们可以有更多的错误信息吗?_R_Language Concepts - Fatal编程技术网

R 我们可以有更多的错误信息吗?

R 我们可以有更多的错误信息吗?,r,language-concepts,R,Language Concepts,在R中,如果函数使用变量,是否有办法弹出错误消息 未在函数体中声明:即,我希望有人标记这种类型的函数 aha<-function(p){ return(p+n) } aha编写R代码来检查其他R代码将是一件棘手的事情。您必须找到一种方法来确定哪些代码位是变量声明,然后尝试确定它们是否已经在函数中声明过。 编辑:前面的陈述应该是正确的,但正如安尼科指出的那样,艰苦的工作已经在程序包中完成了 与此相关的一件可能对您有用的事情是强制从函数本身(而不是从封闭环境)获取变量 由于未声明n,此修

在R中,如果函数使用变量,是否有办法弹出错误消息 未在函数体中声明:即,我希望有人标记这种类型的函数

aha<-function(p){
  return(p+n)
}
aha编写R代码来检查其他R代码将是一件棘手的事情。您必须找到一种方法来确定哪些代码位是变量声明,然后尝试确定它们是否已经在函数中声明过。
编辑:前面的陈述应该是正确的,但正如安尼科指出的那样,艰苦的工作已经在程序包中完成了

与此相关的一件可能对您有用的事情是强制从函数本身(而不是从封闭环境)获取变量

由于未声明
n
,此修改版本的函数将始终失败

aha <- function(p) 
{ 
   n <- get("n", inherits=FALSE)
   return(p+n)
}

ahaRichie的建议很好


<>我只想补充一下,您应该考虑创建在干净的R环境中运行的单元测试用例。这也将消除对全局变量的担忧,并确保您的函数以应有的方式运行。你可能想考虑使用这个。我计划每天晚上使用RScript在新环境中运行测试套件,这非常有效,可以捕获任何类型的范围问题等。

如果您希望在代码编写阶段而不是在运行时检测此类潜在问题,那么
codetools
包就是您的朋友

library(codetools)
aha<-function(p){ 
  return(p+n) 
}

#check a specific function:
checkUsage(aha) 

#check all loaded functions:
checkUsageEnv(.GlobalEnv)
库(codetools)

AHAID通常称为“特征”:在C或C++中,从局部函数到下一层的范围通常是相同的,通常是Global。+ 1用于干净的环境,这是我从LITTLE中使用的“R”,并且如果你在一个我们不支持LITTLE的平台上,则存在RScript。