web-dev-qa-db-ja.com

`R CMD Sweave myfile.rnw`に相当するknitrは何ですか?

コマンドラインとは knitrR CMD Sweave myfile.rnwと同等ですか?

59
Jeromy Anglim

一般的な解決策(Rバージョンに関係なく機能します):

Rscript -e "library(knitr); knit('myfile.Rmd')"

R 3.1.0以降、R CMD Sweaveは、Sweave以外のドキュメントのサポートを開始しました(ただし、コマンド名は少し変に聞こえます)。ドキュメントでビネットエンジンを指定することだけが必要です。

%\VignetteEngine{knitr::knitr}

knitrで可能なビネットエンジンを表示するには、次を使用します。

library(knitr)
library(tools)
names(vignetteEngine(package = 'knitr'))
# "knitr::rmarkdown" "knitr::knitr" "knitr::docco_classic" "knitr::docco_linear"
65
Maiasaura

私はknitme.Rスクリプトを持っています:

library(knitr)
render_html()
source("hooks.R") # mods to defaults
inFile = commandArgs(trailingOnly=TRUE)[1]
outFile = commandArgs(trailingOnly=TRUE)[2]
knit(inFile,output=outFile)

だから私はできる

Rscript knitme.R $SOURCE $TARGET

どこ $SOURCEおよび$TARGETは必要に応じてです。

これをMakeに統合することもできるため、必要なことは次のとおりであるというルールがありました。

make myfile.html

そして、それはmyfile.RhtmlおよびHTMLファイルを生成します。 PDF from .Rnwになるように調整します

Makeの代わりに SCons で使用しているので、少し複雑なSconscriptファイルがあります(部分的にSConsの使い方を習得したばかりなので、少し粗雑かもしれません)

env=Environment()
bld = Builder(action = '/usr/bin/Rscript knitme.R $SOURCE $TARGET',
              suffix='.html',
              src_suffix='Rhtml')
env.Append(BUILDERS = {'Knit' : bld})
env.Knit(source='test.Rhtml',target='test.html')

次に、私がする必要があるのは:

scons test.html

そして私はtest.htmlから構築されたtest.Rhtml if test.Rhtml 変更されました。

これは、すべての他の依存関係に基づいて、Webサイト全体を構築してサーバーにコピーするSconstructファイルの一部です。

今話題外の漂流...

23
Spacedman

他の回答に追加するには、ファイルを編成/レンダリングして出力をすべて1行で開きたい場合は、次のコマンドを使用できます。

Rscript -e "rmarkdown::render('file.Rmd')" & open file.pdf

再利用可能なVimコマンドとして実行する方が簡単であるため、すべてを1行で実行することをお勧めします。

システムのデフォルト以外を使用する場合は、openを特定のアプリケーションに置き換えることもできます。 Windowsを使用していて、スマトラを使用してPDF現在開いている出力を上書きするため、毎回閉じることを覚えておく必要がない)場合は、これを使用する傾向があります。

4
Jacob Amos
R CMD knit file.Rmd

r CMD Sweaveファイルと直接同等です。Rmd

最近、このような汚い作業のためにrmarkdownとknitrに拡張機能があります。スライドの場合、Rmarkdown YAMLヘッダーを使用して目的の出力形式を指定しており、コマンドラインは基本的なものです。

R -e "library(rmarkdown); render(\"file.Rmd\")"
2
pauljohn32