58

コマンドラインニットに相当するものはR CMD Sweave myfile.rnw何ですか?

4

4 に答える 4

67

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

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

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

%\VignetteEngine{knitr::knitr}

knitrで可能なビネットエンジンを確認するには、

library(knitr)
library(tools)
names(vignetteEngine(package = 'knitr'))
# "knitr::rmarkdown" "knitr::knitr" "knitr::docco_classic" "knitr::docco_linear"
于 2012-06-08T06:04:23.877 に答える
24

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.RhtmlHTMLファイルに移動して生成します。.RnwからPDFを作成するように調整します

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.Rhtmltest.Rhtml

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

今話題から外れている...

于 2012-06-08T08:59:01.480 に答える
4

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

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

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

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

于 2016-01-26T22:29:12.623 に答える
2
R CMD knit file.Rmd

R CMDSweavefile.Rmdと直接同等です。

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

R -e "library(rmarkdown); render(\"file.Rmd\")"
于 2015-01-29T01:09:11.823 に答える