0

我正在尝试编写一个执行多个逐步回归并将每个逐步回归的“步骤”输出到文本文件的函数。我遇到的问题是 sink() 实际上没有输出任何东西,因为函数中的任何操作都没有显示在 R 控制台中。

编辑: 问题实际上似乎出现在我的功能的第一部分。文件“model_log.txt”甚至从未被创建,所以有些东西告诉我 sink 在函数中根本不起作用。

到目前为止,这是我的功能:

stepModel <- function(formula, family = binomial, data, outfile = NULL) {
    if (is.null(outfile) == FALSE){
        sink(file = file.path(getwd(),"Reports/model_log.txt"),
            append = TRUE, type = "output")
        print("")
        print("Models run at:   ")
        print(Sys.time())
    }
    model.initial <- glm(formula, family = family, data = data)
    summary(model.initial)
    model.stepwise1 <- step(model.initial, direction = "backward")
    summary(model.stepwise1)
    model.stepwise2 <- step(model.stepwise1, scope = ~.^2)
    summary(model.stepwise2)
    if (is.null(outfile) == FALSE) sink()
    output <- list(modInitial = model.initial, modStep1 = model.stepwise1, modStep2 = model.stepwise2)
    return(output)
}

我正在使用以下数据框来测试我的结果(不要介意逐步回归会删除除截距之外的所有内容,这足以让您重复我的结果):

test.df <- data.frame(a = sample(0:1, 100, rep = T),
                      b = as.factor(sample(0:5, 100, rep = T)),
                      c = runif(100, 0, 100),
                      d = rnorm(100, 50, 50))

test.mdl <- stepModel(a~., family = binomial, data = test.df, outfile = file.path(getwd(), "test_log.txt"))

我希望这个函数将所有这些步骤发送到 outfile 选项中指定的任何文件。有任何想法吗?

4

1 回答 1

1

在说的部分犯了一个错误:

 sink(file = file.path(getwd(),"Reports/model_log.txt"),
            append = TRUE, type = "output")

这应该说:

sink(file = outfile,
            append = TRUE, type = "output")
于 2013-05-15T22:04:24.743 回答