Shiny Server 缺少由 R markdown 文件生成的图表

Shiny Server missing charts generated by R markdown file

我有一个 R markdown 文件,我想在我的公司 Shiny Server 上使用它。

根据 R Markdown: The Definitive Guide,我可以将 runtime: shiny 添加到 Rmd 文件顶部的 YAML 元数据,以将其转换为 Shiny 文档。我已经这样做了并且有效。如果我在 RStudio 中单击 "Run Document",它将 运行 Rmd,我将看到没有问题的报告。

我的项目位于 ShinyApps 目录中,Shiny Server 正在寻找要提供的应用程序。当我点击这个项目的 URL 时,我得到的报告 没有任何图表 。我只是在图表应该出现的地方得到了破损的图像图标。 (我使用的是 RStudio Server,因此 RStudio 和 Shiny Server 访问的文件完全相同)。

R 版本 3.4.3,闪亮服务器版本 1.5.6.875

更新:我已经用最简单的示例重现了该行为。我创建了一个新的 RStudio 项目 - 只是一个普通项目 - 名为 TEST 位于我的 ShinyApps 目录中。然后我创建了一个新的 R Markdown 文件,我称之为 TEST.Rmd。此文件是 pre-populated,示例 RMarkdown 使用 carspressure built-in 数据集。我将 YAML header 更改为包含 runtime: shiny。正如预期的那样,RStudio "knit" 按钮被 "Run Document" 按钮取代,单击此 运行 文档并按预期工作。尝试通过 Shiny Server 查看页面有同样的问题,即不包括情节;损坏的图像图标取而代之。

更新 2:根据要求,这是 Markdown 文件。它实际上是 RStudio 生成的示例文件,在 YAML header.

中添加了 runtime: shiny
---
title: "Test RMarkdown"
author: "Michael Henry"
date: "4/6/2020"
output: html_document
runtime: shiny
---

```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
```

## R Markdown

This is an R Markdown document. Markdown is a simple formatting syntax for authoring HTML, PDF, and MS Word documents. For more details on using R Markdown see <http://rmarkdown.rstudio.com>.

When you click the **Knit** button a document will be generated that includes both content as well as the output of any embedded R code chunks within the document. You can embed an R code chunk like this:

```{r cars}
summary(cars)
```

## Including Plots

You can also embed plots, for example:

```{r pressure, echo=FALSE}
plot(pressure)
```

Note that the `echo = FALSE` parameter was added to the code chunk to prevent printing of the R code that generated the plot.

更新 3:所以我四处寻找服务器,寻找 Shiny Server 的日志文件。我没有任何管理员权限,所以我以前从未寻找过这个,但我找到了一个包含以下内容的日志文件:/lib64/libpango-1.0.so.0: undefined symbol: g_log_structured_standard。事实证明,RHEL 中存在一个错误,它有可用的修复程序,因此我已向我的管理员提出应用修复程序的请求。应用后我会报告它是否解决了我的问题。

更新 4:原来我的 RHEL 服务器是 up-to-date;它已经具有错误修复建议的 glib2 版本。因此,我仍然收到此错误的事实是我的管理员将上报给 Red Hat。

更新 5:Red Hat 支持人员建议周围还有另一个 glib2 so 文件,事实证明确实如此。删除此文件解决了问题!

所以,我认为您可能需要添加一些额外的代码来制作 markdown 应用程序 运行 正如您在 Shiny Server 环境中所期望的那样

尝试用以下内容包装图表:

renderPlot({})

这为服务器提供了对 运行 绘图的命令,然后使其可用于 Shiny 文档。 Shiny 对于正直的 R 程序员来说是一件奇怪的事情。

你基本上是在 R 环境中计算和创建东西,然后将它们交给 Javascript/HTML 一个需要用自己的语言知道该做什么的人。 renderPlot({}) 告诉 JS 组件如何将 R 输出提升到您的页面。

你可以从你链接到的参考文档的这一部分看到格式是什么以及它是如何被 Shiny 提升到页面的。

如果您在执行此操作后仍然卡住,请返回,我会尽力帮助解决问题![​​=13=]

搜索错误消息:/lib64/libpango-1.0.so.0: undefined symbol: g_log_structured_standard 导致了 RHEL 的一个已知问题,即系统上存在不包含符号 g_log_structured_standard 的旧版本 glib2。在我的例子中,服务器是最新的并且有正确版本的 glib2,但是这个库的另一个版本导致了这个问题。

故事的寓意:尽早搜索日志文件并遵循其中的线索!