allコンソールテキストをファイルにリダイレクトします。ここに私が試したものがあります:
> 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"
何が間違っていますか?ありがとう!
「output」と「message」を別々にシンクする必要があります(sink
関数は、type
の-first要素のみを参照します)
inputもログに記録する場合は、スクリプトに入力します。
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")
コマンドラインにアクセスできる場合は、R CMD BATCHを使用してコマンドラインからスクリプトを実行することをお勧めします。
== script.Rのコンテンツを開始==
a <- "a"
a
How come I do not see this in log
== script.Rのコンテンツの終了==
コマンドプロンプト(多くのun * xバリアントでは "$"、Windowsでは "C:>")で、実行します
$ R CMD BATCH script.R &
末尾の「&」はオプションであり、バックグラウンドでコマンドを実行します。ログファイルのデフォルト名には、拡張子に「out」が追加されています。つまり、script.Rout
== script.Routのコンテンツを開始==
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
== script.Routのコンテンツの終了==
できません。出力はsink
で保存でき、入力はsavehistory
で個別に保存できます。または、script
、screen
、_tmux
などの外部ツールを使用します。
エラーメッセージを取得したい場合
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という名前のファイルに出力されます
コンソールからテキストを保存するには、分析を実行し、(Windows)[ファイル]> [ファイルに保存]を選択します。
多数の行のRgui設定を設定し、タイムスタンプを付けて、適切な間隔でファイルとして保存します。
Bashシェルを使用できる場合は、bashスクリプト内からRコードを実行し、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の両方をログファイルにパイプしてスクリプトを実行すると:
$ chmod +x test.sh
$ ./test.sh
$ ./test.sh &>test.log
$ cat test.log
Hello World, this is bash
Here is some R code:
Hello World, this is R
This is a message from bash:
This is a test
これに注目する他のことは、R heredocからstdoutとstderrをログファイルに単純に入れることです。私はまだこれを試していませんが、おそらくうまくいくでしょう。