Минимальная самостоятельная компиляция в файл .pdf Rmarkdown - PullRequest
0 голосов
/ 22 мая 2018

Мне нужно составить простой файл rmarkdown с текстом, кодом и результатами выполненного кода, включенными в итоговый файл PDF.Я бы предпочел, чтобы исходный файл был исполняемым и самодостаточным, что устраняет необходимость в make-файле.

Это лучшее, чего мне удалось добиться, и это далеко не хорошо:

#!/usr/bin/env Rscript


library(knitr)
pandoc('hw_ch4.rmd', format='latex')


# TODO: how to NOT print the above commands to the resulting .pdf?
# TODO: how to avoid putting everyting from here on in ""s?
# TODO: how to avoid mentioning the file name above?
# TODO: how to render special symbols, such as tilde, miu, sigma?
#     Unicode character (U+3BC) not set up for use with LaTeX.
#     See the inputenc package documentation for explanation.

# nano hw_ch4.rmd  && ./hw_ch4.rmd && evince hw_ch4.pdf

"
4E1. In the model definition below, which line is the likelihood?
A: y_i is the likelihood, based on the expectation and deviation.


4M1. For the model definition below, simulate observed heights from the prior (not the posterior).
A:
```{r}
points <- 10
rnorm(points, mean=rnorm(points, 0, 10), sd=runif(points, 0, 10))
```


4M3. Translate the map model formula below into a mathematical model definition.
A:
```{r}
flist <- alist(
y tilda dnorm( mu , sigma ),
miu tilda dnorm( 0 , 10 ),
sigma tilda dunif( 0 , 10 )
)
```
"

Результат:

enter image description here

1 Ответ

0 голосов
/ 22 июля 2018

То, что я в конце концов пришел использовать, это следующий заголовок.Сначала это звучало аккуратно, но позже я понял,

+ is indeed easy to compile in one step
- this is code duplication
- mixing executable script and presentation data in one file is a security risk.

Код:

#!/usr/bin/env Rscript


#<!---
library(rmarkdown)
argv <- commandArgs(trailingOnly=FALSE)
fname <- sub("--file=", "", argv[grep("--file=", argv)])
render(fname, output_format="pdf_document")
quit(status=0)
#-->


---
title:
author: 
date: "compiled on: `r Sys.time()`"
---

Строка quit() должна гарантировать, что остальная часть файла будет считаться данными.Комментарии <!--- и --> должны отображать исполняемый код как комментарии в интерпретации данных.Они, в свою очередь, скрыты # s от оболочки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...