構文エラーをカウントし、プログラムの実行後に構文エラーの数を報告するコードを使用します。エラーカウントコードは、私の以前の質問に答えてstackoverflowで提供されました:R:エラーが発生したかどうかを示すファイルの終わりのコマンドはありますか?
大規模なデータセットを分析するときに、印刷メッセージをコメントアウトするのを忘れることがあり、Rはすべてのデータとすべてのコードを印刷できません。
[ reached getOption("max.print") -- omitted 498 rows ]
それが発生し、エラーカウントコードがエラーを報告した場合、単に上にスクロールしてエラーが何であるかを確認することはできません。Rコードの実行後にエラーを見つける方法はありますか?使ってみtraceback()
ましたが、効果がありませんでした。私は一度も使用traceback()
したことがなく、正しく使用しなかった可能性があります。私がオンラインで見つけた他の潜在的な解決策は、Rファイルを実行する前にコードを挿入する必要があるようです。
printコマンドをコメントアウトしてRコードを再実行することもできますが、この場合、コードの実行には数時間かかります。おそらく、より小さなデータセットを使用してコードをすばやく再実行してエラーを見つけることができますが、それはデータセットのサイズが何らかの理由でエラーを引き起こしていないことを前提としています。
エラーを含むサンプルプログラムを次に示します。が大きな数値(おそらく10000000)に変更された場合n
、このコードは同じシナリオまたは上記で説明したものと同様のシナリオを作成するように見えます。アドバイスありがとうございます。
私は通常、コードを* .rファイルに保存し、そのファイルの内容をコピーして、Rアプリケーションのインストール中にDellPC64ビットWindows7Professionalデスクトップに配置されたデフォルトのRGUIに貼り付けることでコードを実行します。
# the four lines below are for counting syntax errors
.error.count <- 0
old.error.fun <- getOption("error")
new.error.fun <- quote(.error.count <- .error.count + 1)
options(error = new.error.fun, width=2400)
##########################################################
n <- 10
a <- rnorm(n,10,4)
b <- rnorm(n,50,8)
c <- EXP(b)
d <- a + b
df <- data.frame(a,b,d)
df
##########################################################
# the three lines below count the number of errors in the code above
cat("ERROR COUNT:", .error.count, "\n")
options(error = old.error.fun)
rm(.error.count, old.error.fun, new.error.fun)
##########################################################
traceback()
# No traceback available