Как я могу вывести процессы внутри функции в текстовый файл на R (приемник не работает, когда операции выполняются незаметно)?

Я пытаюсь написать функцию, которая выполняет несколько ступенчатых регрессий и выводит "шаги" каждого из них в текстовый файл. Проблема, с которой я столкнулся, заключается в том, что sink() на самом деле ничего не выводит, поскольку ни одна из операций в функции не отображается в консоли R.

Изменить: Проблема на самом деле, кажется, возникает в первой части моей функции. Файл "model_log.txt" даже не создается, поэтому что-то подсказывает мне, что приемник вообще не будет работать внутри функции.

Это моя функция до сих пор:

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. Есть идеи?

1 ответ

Решение

Сделал ошибку в части, которая говорит:

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

это должно сказать:

sink(file = outfile,
            append = TRUE, type = "output")
Другие вопросы по тегам