2017-08-04 4 views
0

私は、Rスクリプトによって読み込まれたAccessのパラメータで構成されるシステムを持っています。それは次にRmarkdownレポートを開始します。 Rmarkdownでは、データファイルを読み込み、Accessパラメータで指定されたグラフを作成するStataスクリプトが作成されます。 Stataグラフをレポートに入れるには、PNGファイルとして保存し、このファイルにRmarkdownコードでリンクする必要があります。最後に、レポートはWordファイルとしてレンダリングされます(knitrとPandocを使用)。可変数のファイルをrmarkdownからリンクする方法

現在の設定では、レポートにグラフが必要な箇所がいくつかあります。これらの場所ごとに1つのPNGファイルを作成し、ファイル名(Accessパラメータによって制御されています)を知り、標準コマンド![](path/to/filename.pngを使用して各ファイルにリンクします。これは正しく動作します。

次の開発段階では、それぞれの場所で、未知のさまざまな数のPNGファイル(最大20ファイル)を作成する必要があります。私はStataでこれを行います。問題は、Rmdコード内のさまざまな数のファイルにリンクすることです。私はこれを行う方法を見つけていないし、どのようにアドバイスが必要です。

ソリューションのアイデアはありますが、実装するコマンドや構文が見つかりません。私はRstudio.comのRmarkdown入門と同じソースのRmarkdown参照ガイド(5ページ)を読んでいます。私はRとRmarkdownの両方にはむしろ新しいので、解決策があることを見落としたり、理解しなかったりするかもしれません。

  • Rmarkdownでループやブランチを設定することはできますか(「if」、「for」、「while」など)?それから私は、現在の数のファイルをループするか、未使用のファイルリンクのまわりを分岐することができます。
  • 特定のディレクトリ内のすべてのファイルを取得できますか?ファイル名にワイルドカードを含むリンクを作ることによって?あるいはこれを達成する別の方法がありますか?
  • プログラムをクラッシュすることなく、現在の実行には存在しないファイルへのリンクを持つ方法はありますか?それから私はすべての予測可能なケースをカバーするのに十分なリンクを設定することができました。

それとも、誰もが他の提案がありますか?

答えて

0

確かに、あなたは、特定のPNGファイルをフィルタリングする場合は、いくつかのより洗練された正規表現にpattern引数を拡張することができます

```{r, results="asis"} 
files <- list.files(path = '/path/to/your/pngdirectory/', 
        pattern = '\\.png', full.names = T) 
for(f in files) cat(paste0('![](',f,')\n')) 
``` 

のようなループを使用することができます。私は自分の名前に「2017年7月11日」を含むPNGファイルをしたい場合はexampeleのために、私は.*は任意の文字にマッチし

list.files(path = '/Users/martin/Dropbox/Screenshots', 
      pattern = '.*2017-07-11.*\\.png', full.names = T) 

を行うだろう。

関連する問題