【发布时间】:2021-03-03 13:00:50
【问题描述】:
在 R 中,我想创建一个在遇到任何错误时返回 Flag=0 的函数:
Error<-function(x){
tryCatch(x,
error=function(e{
Flag=0
}
)
}
当我输入时:错误(5+b)。它不反映 Flag=0。
【问题讨论】:
-
什么意思,"return Flag=0" ...你的意思是返回一个命名的向量或列表,如
list(Flag=0),还是你试图将值0分配给调用环境中名为Flag的对象?或者你只是想让它返回0? -
赋值0
-
好吧,你需要打破范围并违背函数式编程来做到这一点。虽然我认为将新变量分配到调用(或全局)环境中是不好的做法,但您可以使用
assign来做到这一点。使用<<-(如答案)有些工作,但不允许您控制变量放置在哪个环境中。例如,如果 this 是从另一个函数调用的,那么 (1) 如果该函数在其环境中有一个Flag对象,则该对象被分配0,否则 (2)Flag在全球环境。
标签: r error-handling try-catch try-catch-finally