【问题标题】:Table rendering in pdf document using R markdown使用 R markdown 在 pdf 文档中呈现表格
【发布时间】:2020-12-11 14:26:45
【问题描述】:

经过几天的努力寻找解决方案,我放弃并寻求帮助。

我最近决定使用 R Markdown。虽然我可以根据需要渲染绘图,但我无法成功在 pdf 文档中正确渲染我的表格。

这里对应的[EDITED]代码:

---
title: "My_title"
output:
  pdf_document: default
  html_document:
    df_print: paged
params:
  date: "!r Sys.Date()"
---

```{r library, echo=F, message=F, warning=F, paged.print=FALSE}
suppressMessages(library("knitr"))
suppressMessages(library(reshape2))
suppressMessages(library(splines))
suppressMessages(library(kableExtra))
suppressMessages(library(gplots))
```

```{r, setup, echo = F}
opts_knit$set(root.dir = "my_path")
knitr::opts_chunk$set(echo = F)
```


```{r}
dt <- expand.grid(Region=c("a","b","c"), Country=c("d","e","f"), Cancer= c("All", "CRC", "Breast"), 
             age.1.1=1:2,
             age.1.2=1:2,
             age.1.3=1:2)

```

   ```{r Table_1, INCLUDE = TRUE}

  cancer.lab <- c("All", "CRC", "Breast")

  for (i in 1:3){

   b <- dt[dt$Cancer==cancer.lab[i],]

   b <- b[,-3]

   t <- kable(b, format = ,caption = "Fig", row.names = F) %>%
   kable_paper() %>%
   kable_styling(font_size = 9) %>%
   add_header_above(c(" " = 2, "1998" = 3))

   print(t)
  }
  ```

我还是个新手,我肯定会错过一些东西。

如果它可以解释某些事情,我会使用 Mac。

感谢您的帮助。

苏菲。

【问题讨论】:

  • 不要将表分配给变量。删除最后的 print 语句。换句话说,b.wide %&gt;% kable(...) %&gt;% kableStyling(...) 而不是 t.eapc &lt;- b.wide %&gt;% kable(...) ...
  • 仅供参考,您应该几乎总是使用library,而不是require。当包不可用时,后者永远不会停止跟踪代码,这几乎不是预期的。参考:stackoverflow.com/a/51263513
  • 谢谢你,莱米。我打印了表格输出,因为它根本没有出现在以其他方式创建的 pdf 中。
  • 感谢 r2evans 提供此信息。我不得不承认我从来没有理解过两者之间的区别。我现在将使用库。
  • 您需要向我们展示一份完整的文件。您在顶部的“YAML”和块选项中放置的选项很重要。除了应该生成表格的块之外,您可以删除其他所有内容。

标签: r pdf r-markdown


【解决方案1】:

我认为这与此处处理的问题相同:https://stackoverflow.com/a/53632154/2554330。问题是您需要使用knit_print 来打印表格,但不能循环执行。

因此,如果您将最后一个代码块更改为此,它应该可以工作:

   ```{r Table_1, INCLUDE = TRUE}
  results <- c()

  cancer.lab <- c("All", "CRC", "Breast")

  for (i in 1:3){

   b <- dt[dt$Cancer==cancer.lab[i],]

   b <- b[,-3]

   t <- kable(b, format = ,caption = "Fig", row.names = F) %>%
   kable_paper() %>%
   kable_styling(font_size = 9) %>%
   add_header_above(c(" " = 2, "1998" = 3))

   results <- c(results, knit_print(t))
  }
  asis_output(results)
  ```

【讨论】:

  • 感谢您的尝试,但不幸的是,这不起作用。仅显示循环的最后一个图。我试图将 asis_output 包含在循环中,但没有显示任何内容。我尝试了几件事,但似乎无论如何,只有最后一个情节被保存了。
  • 它对我有用。听起来好像您没有正确设置 results 变量。你用results &lt;- c(knit_print(t))了吗?错了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-23
  • 2019-02-25
  • 1970-01-01
相关资源
最近更新 更多