Я хочу перенаправить весь текст консоли в файл. Вот что я пробовал:
> sink("test.log", type=c("output", "message"))
> a <- "a"
> a
> How come I do not see this in log
Error: unexpected symbol in "How come"
Вот что я получил в test.log:
[1] "a"
Вот что я хочу в test.log:
> a <- "a"
> a
[1] "a"
> How come I do not see this in log
Error: unexpected symbol in "How come"
Что я делаю неправильно? Благодаря!
Ответы:
Вы должны обрабатывать «вывод» и «сообщение» отдельно (
sink
функция смотрит только на первый элементtype
)Теперь, если вы хотите, чтобы ввод тоже регистрировался, поместите его в скрипт:
script.R
1:5 + 1:3 # prints and gives a warning stop("foo") # an error
И при подсказке:
con <- file("test.log") sink(con, append=TRUE) sink(con, append=TRUE, type="message") # This will echo all input and not truncate 150+ character lines... source("script.R", echo=TRUE, max.deparse.length=10000) # Restore output to console sink() sink(type="message") # And look at the log... cat(readLines("test.log"), sep="\n")
источник
1:5 + 1:3
, за ней следует ее вывод, затем следующий и т. Д. Причина, по которой я хочу создать журнал этого типа, заключается в том, что у меня есть программа, для выполнения которой требуется более 30 ГБ ОЗУ. Я запускаю его в облаке Amazon и сохраняю результаты регрессий в отдельные файлы. Я хочу иметь возможность быстро находить код, создавший каждый файл, просматривая журнал. Примечание: если я просто вырезал консольный вывод и вставил его, это будет сделано.max.deparse.length
аргумент. Я обновил ответ.Если у вас есть доступ к командной строке, вы можете предпочесть запускать свой сценарий из командной строки с помощью R CMD BATCH.
== начать содержимое скрипта.R ==
a <- "a" a How come I do not see this in log
== конец содержимого скрипта.R ==
В командной строке («$» во многих вариантах un * x, «C:>» в Windows) запустите
Завершающий «&» не является обязательным и запускает команду в фоновом режиме. К расширению файла журнала по умолчанию добавлено «out», то есть script.Rout
== начать содержимое скрипта. Route ==
R version 3.1.0 (2014-04-10) -- "Spring Dance" Copyright (C) 2014 The R Foundation for Statistical Computing Platform: i686-pc-linux-gnu (32-bit) R is free software and comes with ABSOLUTELY NO WARRANTY. You are welcome to redistribute it under certain conditions. Type 'license()' or 'licence()' for distribution details. Natural language support but running in an English locale R is a collaborative project with many contributors. Type 'contributors()' for more information and 'citation()' on how to cite R or R packages in publications. Type 'demo()' for some demos, 'help()' for on-line help, or 'help.start()' for an HTML browser interface to help. Type 'q()' to quit R. [Previously saved workspace restored] > a <- "a" > a [1] "a" > How come I do not see this in log Error: unexpected symbol in "How come" Execution halted
== конец содержимого скрипта.Rout ==
источник
R CMD BATCH script.R &
не работает.Вы не можете. В лучшем случае вы можете сохранять вывод
sink
и вводsavehistory
отдельно. Или используйте внешний инструмент, напримерscript
,screen
илиtmux
.источник
Запустите R в emacs с r-режимом ESS (Emacs Speaks Statistics). У меня открыто одно окно с моим скриптом и кодом R. У другого работает R. Код отправляется из окна синтаксиса и оценивается. Команды, выходные данные, ошибки и предупреждения появляются в текущем сеансе окна R. По окончании некоторого рабочего периода я сохраняю весь вывод в файл. Моя собственная система именования - * .R для скриптов и * .Rout для файлов вывода. Вот скриншот с примером.
источник
Если вы можете использовать оболочку bash, вы можете просто запустить код R из сценария bash и передать потоки stdout и stderr в файл. Вот пример использования heredoc:
Файл:
test.sh
#!/bin/bash # this is a bash script echo "Hello World, this is bash" test1=$(echo "This is a test") echo "Here is some R code:" Rscript --slave --no-save --no-restore - "$test1" <<EOF ## R code cat("\nHello World, this is R\n") args <- commandArgs(TRUE) bash_message<-args[1] cat("\nThis is a message from bash:\n") cat("\n",paste0(bash_message),"\n") EOF # end of script
Затем, когда вы запускаете скрипт с stderr и stdout, переданными в файл журнала:
Другие вещи, на которые следует обратить внимание, - это попытаться просто скопировать stdout и stderr прямо из R heredoc в файл журнала; Я еще не пробовал, но, вероятно, тоже сработает.
источник
Чтобы сохранить текст из консоли: запустите анализ и выберите (Windows) «Файл> Сохранить в файл».
источник
Установите в настройках Rgui большое количество строк, затем отметьте время и сохраните как файл через подходящие промежутки времени.
источник
Вы можете печатать в файл и в то же время видеть прогресс, имеющийся (или нет)
screen
при выполнении сценария R.Если экран не используется, используйте
R CMD BATCH yourscript.R &
и шаг 4.При использовании экрана в терминале стартовый экран
запустите свой R скрипт
Перейти к другому экрану, нажав CtrlA, затемc
посмотрите на свой вывод (в реальном времени):
Переключайтесь между экранами с помощью CtrlAзатемn
источник
Если вы хотите, чтобы сообщения об ошибках сохранялись в файле
zz <- file("Errors.txt", open="wt") sink(zz, type="message")
вывод будет:
Error in print(errr) : object 'errr' not found Execution halted
Этот вывод будет сохранен в файле с именем Errors.txt.
В случае, если вы хотите, чтобы значения консоли выводились в файл, вы можете использовать аргумент split:
zz <- file("console.txt", open="wt") sink(zz, split=TRUE) print("cool") print(errr)
вывод будет:
[1] "cool"
в файле console.txt. Таким образом, весь вывод вашей консоли будет напечатан в файле с именем console.txt.
источник