Stack Overflowで同様の質問を見ましたが、決定的な答えは事実上ありませんでした。
Markdown(Rstudio)スクリプトのグローバルR環境にあるオブジェクト(回帰近似、データフレーム、その他のオブジェクト)にアクセスして使用する最も簡単な方法は何ですか。
RStudioチームが物事を快適で効果的にする傾向があることを考えると、これに対する簡単な解決策がないことは驚くべきことです。
前もって感謝します。
良くも悪くも、この省略は意図的なものです。文書の外部で作成されたオブジェクトに依存すると、文書の再現性が低下します。つまり、文書がグローバル環境でデータを必要とする場合、誰か(または2年以内に自分)に文書とデータファイルを与えて再作成させることはできませんそれ自体。
このため、そしてバックグラウンドでレンダリングを実行するために、RStudioは実際にドキュメントをレンダリングするために個別のRセッションを作成します。そのバックグラウンドRセッションは、RStudioで表示されるインタラクティブRセッションの環境を表示できません。
この問題を回避する最善の方法は、グローバル環境のコンテンツを作成するために使用したコードを取得し、ドキュメント内に移動することです(ドキュメントに表示したくない場合は_echo = FALSE
_を使用できます) 。これにより、ドキュメントは自己完結型で再現可能になります。
それができない場合、グローバル環境でデータを直接使用するために取ることができるいくつかのアプローチがあります。
この問題は、編成中のコードでパッケージを明示的に参照することで解決したと思います。たとえば、 yarrr パッケージを使用して、data(pirates)
を使用してデータフレーム「pirates」をロードしました。これはコンソールおよびRstudioコードチャンク内で正常に機能しましたが、knitrでは上記の質問のパターンに従って失敗しました。ただし、pirates <- yarrr::pirates
を使用してオブジェクトを作成してデータをメモリにロードした場合、ドキュメントはHTMLにきれいに編まれます。
私自身も同じ問題を抱えています。いくつかのものは毎回再現するのにかなり時間がかかります。
別の答えがあると思います。 save.image()
関数を使用して環境を標準の_.Rdata
_ファイルとは異なるファイルに保存するとどうなりますか。次に、load()
を使用して戻します。
同じデータを使用していることを確認するには、toolsのmd5sum()
を使用します。
乾杯、コード
RStudioの[ツール]と[グローバルオプション]に移動し、[Rマークダウン]タブにアクセスして、[ディレクトリ内のチャンクを評価]で選択を行います。そこで[ドキュメント]オプションを選択すると、RマークダウンニットエンジンプレーンRコードと同様にグローバル環境にアクセスします。この情報がこの情報を検索する人に役立つことを願っています!