【问题标题】:Is there any possibility to execute this code ? R markdown problem有没有可能执行这段代码? R降价问题
【发布时间】:2021-02-05 14:36:11
【问题描述】:

我的目标是将数据导出为 PDF。为此,我使用了此代码。预期的结果是导出 PDF 输出,编译时没有任何错误。实际上,显示 PDF 输出时存在问题。

我用这个命令install.packages('tinytex') 安装了 TinyTex 并且 tinytex::install_tinytex().

如果有人能帮我解决这个问题,我将不胜感激

R 控制台显示警告消息:

output file: file1e7c53f754f1.knit.md

"C:/Program Files/RStudio/bin/pandoc/pandoc" +RTS -K512m -RTS file1e7c53f754f1.utf8.md --to latex --from markdown+autolink_bare_uris+tex_math_single_backslash --output pandoc1e7c2fc133f5.tex --self-contained --highlight-style tango --pdf-engine pdflatex --variable graphics --lua-filter "C:/Users/stagiaire/Documents/R/R-4.0.2/library/rmarkdown/rmd/lua/pagebreak.lua" --lua-filter "C:/Users/stagiaire/Documents/R/R-4.0.2/library/rmarkdown/rmd/lua/latex-div.lua" --variable "geometry:margin=1in" 
This is pdfTeX, Version 3.14159265-2.6-1.40.21 (TeX Live 2020/W32TeX) (preloaded format=pdflatex)
 restricted \write18 enabled.
entering extended mode
Warning: Error in : LaTeX failed to compile C:\Users\STAGIA~1\AppData\Local\Temp\RtmpclIBQw/report.tex. See https://yihui.org/tinytex/r/#debugging for debugging tips.

代码如下:

library(shiny)
library(DT)
library(base64enc)
library(rmarkdown)

js <- '
Shiny.addCustomMessageHandler("download", function(b64) {
  const a = document.createElement("a");
  document.body.append(a);
  a.download = "report.pdf";
  a.href = b64;
  a.click();
  a.remove();
})
'

ui <- basicPage(
  tags$head(
    tags$script(HTML(js))
  ),
  br(),
  DTOutput("dtable")
)

server <- function(input, output, session){
  
  dat <- iris[1:13, ] 
  
  output[["dtable"]] <- renderDT({
    datatable(
      dat,
      extensions = "Buttons",
      options = list(
        dom = "Bfrtip",
        buttons = list(
          list(
            extend = "collection",
            text = "Report",
            action = JS(
              "function ( e, dt, node, config ) {",
              "  var array = dt.data().toArray();",
              "  var tarray =  Object.keys(array[0]).map(function(c) {",
              "    return array.map(function(r) { return r[c]; });",
              "  });",
              "  var df = {};",
              "  for(var i = 1; i <= tarray.length; ++i) {",
              "    df['V' + i] = tarray[i-1];",
              "  }",
              "  Shiny.setInputValue('report', df);",
              "}")
          )
        )
      )
    )
  }, server = FALSE)
  
  observeEvent(input[["report"]], {
    df <- 
      setNames(as.data.frame(lapply(input[["report"]][-1], unlist)), names(dat))
    showNotification("Creating report...", type = "message")
    tmpReport <- tempfile(fileext = ".Rmd")
    file.copy("report.Rmd", tmpReport)
    outfile <- file.path(tempdir(), "report.pdf")
    render(
      tmpReport, 
      output_file = outfile,
      params = list(
        data = df
      )
    )
    b64 <- dataURI(
      file = outfile,
      mime = "application/pdf"
    )
    session$sendCustomMessage("download", b64)
  })
}

shinyApp(ui, server)

文件report.Rmd:

---
title: "My awesome report"
author: "John Doe"
date: "21/10/2020"
output: pdf_document
params:
  data: "x"
---
  
```{r setup, include=FALSE}
library(knitr)
opts_chunk$set(echo = FALSE)```
 ```{r}
kable(params[["data"]], row.names = FALSE)```

【问题讨论】:

  • report.Rmd 文件是否是您复制的文本?尝试将 ``` 换行
  • 是的,我确实做到了,您尝试过代码吗?对你有用吗?
  • 是的。它适用于 ``` 的新行

标签: r shiny r-markdown markdown dt


【解决方案1】:

只是一个猜测,但也许需要命名:

```{r name}
kable(params[["data"]], row.names = FALSE)
```

【讨论】:

    【解决方案2】:

    事实上,代码可以工作,我只是在这一行有一个问题:

    outfile &lt;- file.path(tempdir(), "report.pdf")

    示例:C:\Users\Desktop/report.pdf

    感谢您的合作!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-05-16
      • 1970-01-01
      • 1970-01-01
      • 2012-02-23
      • 1970-01-01
      • 1970-01-01
      • 2019-07-26
      • 2021-07-14
      相关资源
      最近更新 更多