от выхода кода r до ввода rmarkdown - PullRequest
0 голосов
/ 10 мая 2018

Я хочу взять CSV-файл с именем / ссылкой и превратить его в отсортированный по алфавиту список rmarkdown. Сортировка проста, форматирование легко, но переход от вывода R к уценке сбивает с толку.

У меня есть следующий CSV,

name,link
Compiling,compiling.Rmd
Setup,setup.Rmd
Entities,entities.Rmd

Затем у меня есть R-файл, который сортирует вышеуказанный CSV по алфавиту, а затем возвращает в формате уценки (оглавление).

getTOC <- function() {
  toc <- read.csv("data/toc.csv", fileEncoding="UTF-8-BOM")
  toc <- toc[order(toc$name),]
  toc$ind <- seq(nrow(toc))

  # into Rmd format
  toc_md <- data.frame(NULL)
  toc_md <- paste0(toc$ind, ". [", toc$name, "](", toc$link, ")\n")
  return(toc_md)
}

С выводом:

"1. [Compiling](compiling.Rmd)" "2. [Entities](entities.Rmd)"   "3. [Setup](setup.Rmd)" 

Вопрос кажется глупым, но как мне получить этот вывод для чтения в файл Rmd так же, как это делали бы следующие действия, поскольку любой способ вывода предыдущего добавляет дополнительные символы и т. Д., Которые делают .Rmd нечитаемым.

1. [Compiling](compiling.Rmd)
2. [Entities](entities.Rmd)
3. [Setup](setup.Rmd)

1 Ответ

0 голосов
/ 11 мая 2018

Вы можете использовать пакет pander, который имеет множество функций для вывода на уценку.Одним из них является pandoc.p, который создает абзацы для каждого элемента в векторе символов, который вы ему даете.Чтобы распечатать сгенерированную уценку, вам нужно установить results='asis' для чанка.Таким образом, вы можете использовать чанк, такой как:

```{r results='asis'}
toc <- getTOC()
pandoc.p(toc)
```

Если вы сохраните уценку, вы увидите, что это было сгенерировано:

1. [Compiling](compiling.Rmd)
2. [Entities](entities.Rmd)
3. [Setup](setup.Rmd)

, который затем будет вязать, как вы ожидаетеhtml или latex.

Существуют и другие pandoc.* функции, которые могут быть полезны, например pandoc.link и pandoc.list.

...