Как визуализировать Rmarkdown, встроенный в Rmarkdown [дубликат]

Меня удивляет, что это еще не упоминалось, поэтому для полноты ...

Вы можете выполнить распаковку списка с помощью оператора «splat»: *, который также будет скопируйте элементы вашего списка.

old_list = [1, 2, 3]

new_list = [*old_list]

new_list.append(4)
old_list == [1, 2, 3]
new_list == [1, 2, 3, 4]

Очевидным недостатком этого метода является то, что он доступен только в Python 3.5 +.

Сроки, однако, это работает лучше, чем другие распространенные методы.

x = [random.random() for _ in range(1000)]

%timeit a = list(x)
%timeit a = x.copy()
%timeit a = x[:]

%timeit a = [*x]

#: 2.47 µs ± 38.1 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each)
#: 2.47 µs ± 54.6 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each)
#: 2.39 µs ± 58.2 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each)

#: 2.22 µs ± 43.2 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each)
66
задан RobinLovelace 13 September 2014 в 18:46
поделиться

3 ответа

Я бы рекомендовал, чтобы люди использовали пакет bookdown для создания отчетов из нескольких файлов R Markdown. Он добавляет много полезных функций, таких как перекрестные ссылки, которые очень полезны для более длинных документов.

Адаптация примера из @Eric - вот минимальный пример настройки bookdown. Основная деталь заключается в том, что основной файл должен называться index.Rmd и должен включать дополнительную строку YAML site: bookdown::bookdown_site:

index.Rmd

---
title: "A Minimal bookdown document"
site: bookdown::bookdown_site
output:
  bookdown::pdf_document2:
    toc: yes
---

01-intro .Rmd:

# Chapter 1

This is chapter 1.

```{r}
1
```

02-intro.Rmd:

# Chapter 2

This is chapter 2.

```{r}
2
```

Если мы вставим index.Rmd bookdown, объедините все файлы в том же каталоге в алфавитном порядке ( это может быть изменено с помощью дополнительного файла _bookdown.yml).

Как только вам станет удобно с этой базовой настройкой, легко настроить выпадающий документ и выходные форматы с использованием дополнительных файлов конфигурации, т.е. _bookdown.yml и _output.yml

Дальнейшее чтение

5
ответ дан Community 21 August 2018 в 15:14
поделиться

Это сработало для меня:

Rmd_bind <- 
    function(dir = ".",
    book_header = readLines(textConnection("---\ntitle: 'Title'\n---")))
{
    old <- setwd(dir)
    if(length(grep("book.Rmd", list.files())) > 0){
    warning("book.Rmd already exists")
    }
    write(book_header, file = "book.Rmd", )
    cfiles <- list.files(pattern = "*.Rmd", )
    ttext <- NULL
    for(i in 1:length(cfiles)){
    text <- readLines(cfiles[i])
    hspan <- grep("---", text)
    text <- text[-c(hspan[1]:hspan[2])]
    write(text, sep = "\n", file = "book.Rmd", append = T)
    }
    render("book.Rmd", output_format = "pdf_document")
    setwd(old)
    }

Представьте, что есть лучшее решение и было бы неплохо иметь что-то подобное в пакетах rmarkdown или knitr.

4
ответ дан Dominik 21 August 2018 в 15:14
поделиться
  • 1
    Я думаю, что это разумное решение, за исключением того, что вы забыли несколько круглых скобок (и отступы !! :) – Yihui Xie 17 September 2014 в 04:28

Обновление в августе 2018 года: этот ответ был написан до появления bookdown, что является более мощным подходом к написанию книг Rmarkdown. Посмотрите минимальный пример bookdown в ответе @ Mikey-Harper!

Когда я хочу разбить большой отчет на отдельный Rmd, я обычно создаю родительский Rmd и включаю главы как дети. Этот подход легко понять новым пользователям, и если вы включаете оглавление (toc), легко перемещаться между главами.

report.Rmd

---  
title: My Report  
output: 
  pdf_document:
    toc: yes 
---

```{r child = 'chapter1.Rmd'}
```

```{r child = 'chapter2.Rmd'}
```

Глава 1.Rmd

# Chapter 1

This is chapter 1.

```{r}
1
```

chapter2.Rmd

# Chapter 2

This is chapter 2.

```{r}
2
```

Build

rmarkdown::render('report.Rmd')

Что производит: My report [/g0]

И если вы хотите быстро создать куски для ваших дочерних документов:

rmd <- list.files(pattern = '*.Rmd', recursive = T)
chunks <- paste0("```{r child = '", rmd, "'}\n```\n")
cat(chunks, sep = '\n')
# ```{r child = 'chapter1.Rmd'}
# ```
#
# ```{r child = 'chapter2.Rmd'}
# ```
94
ответ дан Eric 21 August 2018 в 15:14
поделиться
  • 1
    Он работает, но у меня есть 10 глав. Когда я создаю файлы, он переходит к 5-му файлу. Я вижу все заголовки с панели навигации PDF, но страницы не отображаются. – Suat Atan PhD 22 May 2015 в 02:50