7

on.exit() 関数の「追加」引数が true である簡単な使用例を教えてもらえますか?

4

2 に答える 2

10

これは非常に簡単な例です

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 の 2 回目の呼び出しで最初の呼び出しが削除されます。

于 2012-06-11T01:20:28.860 に答える
0

Rはわかりませんが、onexeitの定義を読んで前の式を上書きしadd = trueながら、以前に保存されたonexit式に加えて最初の式が評価されることを確認します。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, ...)
}
于 2012-06-11T00:44:57.153 に答える