いくつかの段階的な回帰を実行し、それぞれの「ステップ」をテキスト ファイルに出力する関数を作成しようとしています。私が抱えている問題は、関数の操作が R コンソールに表示されないため、sink() が実際には何も出力しないことです。
編集: 問題は実際には私の機能の最初の部分で発生しているようです。ファイル「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 オプションで指定されたファイルに送信したいと考えています。何か案は?