2012-06-08 29 views

Trả lời

62

Các giải pháp chung (chỉ hoạt động không phụ thuộc vào phiên bản R):

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

Kể từ R 3.1.0, R CMD Sweave đã bắt đầu để hỗ trợ tài liệu không Sweave (mặc dù tên lệnh âm thanh một chút lẻ), và điều duy nhất bạn cần làm là chỉ định công cụ làm mờ nét ảnh trong tài liệu của bạn, ví dụ:

%\VignetteEngine{knitr::knitr} 

Để xem các công cụ họa tiết càng tốt trong knitr, sử dụng

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

Chết tiệt ... Tôi sẽ đăng bài đó nhưng tôi đã tìm cách kiểm tra một chút để xem liệu có thay thế ít cheesy ... – Dason

+5

quá cheesy? Thiếu thực sự được xây dựng vào R, bạn không thể làm tốt hơn nhiều. Makefiles của tôi có thư viện '$ (RSCRIPT) -e '(đan), đan (\" $ *. Rnw \ ")" ' –

+2

Rực rỡ. Trong trường hợp cụ thể này, tôi vẫn đang sử dụng LaTeX, thay vì R Markdown, vì vậy nó là thư viện 'Rscript -e' (đan), đan ('myfile.rnw') "' –

22

Tôi có một kịch bản 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) 

vì vậy tôi sau đó có thể làm

Rscript knitme.R $SOURCE $TARGET 

Nơi cần có $SOURCE$TARGET.

Bạn cũng có thể tích hợp này vào Make, vì vậy bạn đã có một quy tắc mà tất cả các bạn phải làm là:

make myfile.html 

và nó sẽ đi đến myfile.Rhtml và sản xuất các tập tin HTML. Điều chỉnh để làm cho PDF từ .Rnw

Tôi đang sử dụng nó với SCons thay vì thực hiện, vì vậy tôi có một Sconscript tập tin đó là phức tạp hơn một chút (một phần vì tôi đã chỉ mới bắt đầu học cách sử dụng SCons, vì thế nó có thể là một chút crufty)

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') 

Sau đó, tất cả những gì cần làm là:

scons test.html 

và tôi nhận được test.html xây dựng từ test.Rhtml nếu test.Rhtml đã thay đổi.

Đây là tất cả các phần của một file Sconstruct rằng xây dựng một trang web toàn bộ và sao chép nó vào một máy chủ, dựa trên tất cả các loại phụ thuộc khác ..

Drifting off-topic bây giờ ...

+0

Tôi chưa thể làm cho nó hoạt động với SConstruct. Tôi muốn, một cái gì đó giống như trong http://tex.stackexchange.com/a/26573/8272 –

2
R CMD knit file.Rmd 

tương đương trực tiếp với tệp R CMD Sweave.Rmd

Gần đây, có các chức năng nâng cao trong rmarkdown và knitr cho loại công việc bẩn này.Đối với các slide, tôi đã sử dụng tiêu đề Rmarkdown YAML để chỉ định dạng đầu ra dự định và dòng lệnh là cơ bản, như

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

Để thêm vào các câu trả lời khác, nếu bạn muốn đan/render file và mở đầu ra tất cả trong một dòng mà bạn có thể sử dụng:

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

Tôi thích làm tất cả trong một dòng vì nó đơn giản để chạy như một lệnh Vim tái sử dụng được.

Bạn cũng có thể thay thế open bằng một ứng dụng cụ thể nếu bạn muốn sử dụng hệ thống không mặc định của mình. Tôi có xu hướng sử dụng điều này nếu tôi đang trên Windows và muốn sử dụng Sumatra để ghi đè lên một đầu ra PDF hiện đang mở (vì vậy tôi không phải nhớ đóng nó mỗi lần).

+0

Đã thêm điều này làm người xây dựng trong tệp 'SConstruct'. Xem: http://stackoverflow.com/a/38806488/1172302. –

Các vấn đề liên quan