Функция sink
устанавливает перенаправление вывода в файл. Вы делаете это только один раз, до цикла. Вывод cat
будет затем перенаправляться в ваш файл приемника, пока вы не отмените прием с помощью sink()
.
Итак, ваш код должен выглядеть примерно так:
sink("Report.txt")
for (i in bkv) {
new <- df[df$bkod==i,]
dp <- new[new$plan!=new$sevk,]
medy <- 100*(nrow(dp)/nrow(new))
cat(i, "için müdahale oranı: %", medy, "\n")
}
sink()
Возможно иметь стек sink
файлов. Максимальный размер этого стека будет зависеть от того, сколько дескрипторов открытых файлов ваша операционная система позволит.
Внимание
Я использовал sink
совсем немного как R newby. Но я думаю, что это имеет некоторые опасные побочные эффекты, которые вы должны принять к сведению. Наиболее важным является то, что если в вашем скрипте есть ошибки, и вы перезапустите скрипт, то ваш sink(filename)
будет добавлен в стек приемников.
Так что, если вы не будете скрупулезно вести учет стека sink
, это может привести к всевозможным ошибкам.
На мой взгляд, гораздо лучше использовать возможность cat
для добавления в файл, например:
cat(..., file="Report.txt", append=TRUE)
Или, что еще лучше, написать функцию-обертку. Что-то вроде:
catf <- function(..., file="report.txt", append=TRUE){
cat(..., file=file, append=append)
}