有人能为我提供一个简单的用例,其中on.exit()函数“add”参数为true?
答案 0 :(得分:8)
这是一个非常简单的例子
myfun <- function(x){
on.exit(print("first"))
on.exit(print("second"), add = TRUE)
return(x)
}
myfun(2)
#[1] "first"
#[1] "second"
#[1] 2
还要注意没有add = TRUE参数
会发生什么fun <- function(x){
on.exit(print("first"))
on.exit(print("second"))
return(x)
}
fun(2)
#[1] "second"
#[1] 2
如果你不添加“add = TRUE”,第二次调用on.exit将删除第一个调用。
答案 1 :(得分:0)
我不知道R但是阅读the definition of onexeit,add = true
确保除了先前存储的onexit experssions之外还评估第一个表达式,而add = false
覆盖前一个表达式。
所以环顾四周,我在jhsph.edu上找到了这个:
基本上确保tmp
也已关闭,退出时file
readData2 <- function(file, ...) {
file <- file(file, "r")
on.exit(close(file))
tmp <- tempfile()
tmpcon <- file(tmp, "w")
on.exit(close(tmpcon), add = TRUE)
incomment <- FALSE
while(length(line <- readLines(file, 1)) > 0) {
.
.
. ommited in SO example
.
.
.
}
close(tmpcon)
close(file)
on.exit()
read.csv(tmp, ...)
}