我正在尝试编写一个执行多个逐步回归并将每个逐步回归的“步骤”输出到文本文件的函数。我遇到的问题是 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 选项中指定的任何文件。有任何想法吗?