2015-06-16 2 views
1

Я хотел бы использовать R Markdown для создания домашних заданий и экзаменационных решений, но я бы предпочел, чтобы они были более читабельными для некодиров.Сделайте R Markdown кодовыми блоками в математическом режиме

Есть ли способ, которым я могу передать выход ECHO через математический режим? То есть я хотел бы иметь ECHO, который выглядит более «встроенным» и менее похожим на код. Я вижу, как скрыть его, но в R Markdown Reference Guide я не вижу возможности удалить «блок кода» и обернуть каждую строку в $$ (или обернуть что угодно). Есть ли способ сделать это?

Вот пример. Это решение имеет все мясо, но может быть немного интересным для некоторых студентов (это не курс R).

8-22 ... 

a. ... 

```{r part_a} 

D_0 = 2.40 
g = 0.06 
r = 0.12 

V = D_0*(1 + g)/(r - g) 
V 
``` 

Вместо этого, я хотел бы видеть что-то больше похож на следующее.^[Я понимаю, что я могу генерировать этот вывод с некоторым вырезанием и вставкой и текстовым редактором, я просто пытаюсь найти наиболее эффективное решение , так как это, вероятно, то, что я буду делать больше, чем один или два раза.]

8.22 ... 

a. ... 

$$ D_0 = 2.40 $$ 
$$ g = 0.06 $$ 
$$ r = 0.12 $$ 
$$ V = D_0 \times (1 + g)/(r - g) = 2.40 \times (1 + 0.06)/(0.12 - 0.06) = `r V`$$ 

ответ

1

у меня есть частичный ответ. Я еще не знаю, как заменить переменную x своим значением, чтобы можно было напечатать формулу с переменными, замененными цифрами. Но я могу сгенерировать блок «математический код», чтобы я мог решить проблему и создать красивое решение без большого количества вырезания и вставки.

Ниже приведен пример файла .Rmd.

--- 
author: Richard Herron 
title: Homework Solutions 
--- 

8-22 ... 

a. ... 

There are three parts to this solution. 

1. write the equations to solve the problem in R-readable strings. 
2. loop over the list and `eval(parse())` the equation strings 
3. wrap strings in `$$ $$` with `cat(paste0())` 

Chunks should be set to `echo=FALSE` and `results="asis`. You may need to suppress some function output with `invisible()`. 


```{r part_a, echo=FALSE, results="asis"} 

# just to make sure my eval below works 
rm(list=ls()) 

# store solution as a list of character equations 
solution <- list(
"D_0 = 2.40", 
"g = 0.06", 
"r = 0.12", 
"V = D_0*(1 + g)/(r - g)" 
) 

# "solve" problem 
for (i in seq_along(solution)) eval(parse(text=solution[[i]])) 

# display solution as math 
cat(paste0("$$", solution, "$$"), sep="\n") 
``` 

Because of the `eval()` loop in the first chunk I can say that $V = `r V`$ in the text that follows. 

И вот внешний файл, который преобразует каждый .Rmd-файл в .pdf.

# load `render` and set working directory 
setwd("C:/Users/Richard/Dropbox/Babson College/SME 2021 for 2015 fall/Homework") 

# loop over all Rmd files 
require(rmarkdown) 
require(tools) 
files <- list.files(path=".", pattern="*.Rmd") 
roots <- sapply(files, file_path_sans_ext) 
namesIn <- paste0("", roots, ".pdf") 
namesOut <- paste0("", roots, ".pdf") 

# solutions 
myPdf <- pdf_document(
    fig_caption=TRUE, 
    keep_tex=TRUE, 
    pandoc_args=c(
     "--variable=classoption:fleqn", 
     "--variable=classoption:twocolumn", 
     paste0("--metadata=date:", format(Sys.time(), "%B %d, %Y")) 
     ) 
    ) 
lapply(files, FUN=render, output_format=myPdf) 
mapply(file.rename, namesIn, namesOut) 

Что дает этот pdf.

enter image description here

Смежные вопросы