66

2つのソースファイルがあると仮定します。最初のファイルは名前が付けられexample1.r、2番目のファイルはexample2.r(以下に示されています)。

example1.r

plot(1:10,1:10)

example2.r

qplot(1:10,1:10)

example1.rを入手すると、グラフが描画されます。ただし、example2.rを入手した場合はそうではありません。ここでの解決策は何ですか?

(example2.rのqplotはggplot2の関数です)

4

1 に答える 1

79

更新

  • .Rファイル: sourceのオプションprint.eval=TRUEは、インタラクティブコマンドラインのように評価結果の印刷動作につながります。

source("Script.R", print.eval=TRUE)

  • .Rnwファイル: knitrデフォルトでは、対話型コマンドラインwrtの動作をエミュレートします。printing。knitrRパッケージビネットでもスウィービングエンジンとして指定できることに注意してください。


これが私の最初の答えです。ただし、この回避策は現在完全に廃止されていることに注意してください(そして、それは常に小さな怠惰なニッチにのみ有効でした)。

これは有名なFAQ7.22です:なぜラティス/トレリスグラフィックスが機能しないのですか?

ggplot2やlatticeのようなグリッドグラフィックスの場合、実際に描画するには、グラフィックスオブジェクトを印刷する必要があります。

コマンドラインでインタラクティブに、これは自動的に行われます。他のすべての場所(ソースされるファイル、ループ、関数、Sweaveチャンク内)では、明示的に出力する必要があります。

print (qplot (1 : 10, 1 : 10))

または、再定義qplotして印刷を行うこともできます。

qplot <- function (x, y = NULL, z = NULL, ...) {
  p <- ggplot2::qplot (x = x, y = y, z = z, ...)
  print (p)
}

(これにより、軸ラベルがxとyに変更されます)。

このアプローチは、インタラクティブセッションのユーザーが入力するのとまったく同じようにコードを記述したいビネットで使用します。

于 2011-07-13T07:40:59.983 に答える