R Markdown не создает .pdf и .doc (с пакетом flextable) не умеет вязать соответственно - PullRequest
0 голосов
/ 20 мая 2019

Я пытаюсь создать .pdf и .doc для создания отчета из следующего кода.Всего есть две проблемы:

  1. с выходом .pdf R работает, но как только я связываю с pdf, он запускает весь код и генерирует файл .pdf с 0 кб.Я не могу открыть этот файл.

  2. .doc output В файле .doc я хочу изменить макет страниц и хочу использовать разрыв страницы, но он не работает.Я также хочу написать код для макета страницы (альбомной или портретной), но он не работает.Так как я могу создать только портретную страницу, но таблица, которую я создал с помощью flextable, не подходит для автоматической подгонки на странице.

Я установил MIKTEX, но затем таблица и график плавают в документах.так что я удалил его.Я не понимаю, что такое «Каир из памяти» по ошибке.

---
title: "Bla bla bla"
author: "Kishan"
date: "`r format(Sys.time(), '%d.%m.%Y')`"
output:
  pdf_document: default
  word_document: default
  html_document: default
---

# Global option --------

```{r setup, include=FALSE}

knitr::opts_chunk$set(echo = FALSE, messAgegr = FALSE,
                      comment=FALSE, warning=FALSE, 
                      results = "asis", dpi=600,
                      fig.width= 15, fig.height=8  ,
                       dev = "cairo_pdf"
                      )

options(kableExtra.latex.load_packages=TRUE,
        kableExtra.auto_format=FALSE)

library(tidyr)
library(dplyr)
library(janitor)
library(ggplot2)
library(readxl)
library(knitr)
library(kableExtra)
library(tinytex)

library(flextable)


options(tinytex.verbose = TRUE)


ggpt <- theme_bw() +
  theme(#text=element_text(size=rel(1.7)),
    axis.title.x=element_text(size=rel(1.5)),
    axis.title.y=element_text(size=rel(1.5)),
    axis.text.x=element_text(size=rel (1.5)),
    axis.text.y=element_text(size=rel (1.5)),
    strip.text.x=element_text(size=rel(1.2)),
    strip.text.y=element_text(size=rel(1.2)),
    legend.text=element_text(size=rel (1.3)),
    legend.title=element_text(size=rel(1.3)),
    plot.title=element_text(size=rel  (1.5)))


doc_type <- knitr::opts_knit$get("rmarkdown.pandoc.to")

if(is.null(doc_type)) {
  doc_type <- "raw"
}

```

```{r}

stdtabl <- function(data, caption=NULL, format="raw") {
    if(format %in% c("latex", "html")) {
        data %>%
            knitr::kable(booktabs=TRUE,
                         format=format,
                         digits=0,
                         caption=caption) %>%
            kable_styling(bootstrap_options=c("striped", "hover", "condensed", "responsive"),
                          full_width=FALSE,
                          font_size=12,
                          fixed_thead=TRUE,
                          position="center") %>%
            column_spec(column=1,
                        bold=TRUE)
    } else if(format == "docx") {
        ## use flextable as kableExtra does not handle Word documents
        data %>%
            flextable() %>%
            theme_zebra() %>%
            autofit() %>%
            font(fontname="Calibri")

    } else {  "raw"
        data %>%
            knitr::kable()
    }
}

```
```{r}

mobitab <- EQBase %>% 
  tabyl(Zeitpunkt, eq5d5lMobil) %>%
  adorn_percentages("row") %>%
  adorn_pct_formatting(digits = 0 ) %>%
  adorn_ns(position = "front") %>% 
  select(Zeitpunkt,'mob_1','mob_2','mob_3','mob_4','mob_5','V1')

stdtabl(mobitab, caption= 'sdsdyfwerfew', format=doc_type)

```


```{r}

barplotmob <- EQBase %>% 
  mutate(eq5d5lMobil= factor(eq5d5lMobil, levels = c("","mob_5", "mob_4", "mob_3", "mob_2", "mob_1"))) %>%
  group_by(VisitID, eq5d5lMobil) %>% 
  summarise(Count= n()) %>% 
  mutate(Percentage = Count/sum(Count)*100, round(Percentage, digits=0)) %>% 
  mutate(lab_ypos = 100-(cumsum(Percentage) - 0.5 * Percentage))

  ggplot(barplotmob, aes(x=factor(VisitID),  y=Percentage, fill = factor(eq5d5lMobil))) + 
  geom_bar(stat="identity", width = 0.7)+
  geom_text (aes(y = lab_ypos, label = paste0(round(Percentage, digits=0)), group =eq5d5lMobil), 
             color = "black",  size = 3)


```

>Quitting from lines 238-274 (EQ5D_1.rmd) 
Fehler in (function (filename = if (onefile) "Rplots.pdf" else "Rplot%03d.pdf",  : 
  unable to start device 'cairo_pdf'
Ruft auf: <Anonymous> ... in_base_dir -> in_dir -> plot2dev -> do.call -> <Anonymous>
Zusätzlich: Warnmeldungen:
1: Calling `as_tibble()` on a vector is discouraged, because the behavior is likely to change in the future. Use `enframe(name = NULL)` instead.
This warning is displayed once per session. 
2: In (function (filename = if (onefile) "Rplots.pdf" else "Rplot%03d.pdf",  :
  cairo error 'out of memory'
Ausführung angehalten
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...