【问题标题】:Shiny Server missing charts generated by R markdown fileShiny Server 缺少由 R markdown 文件生成的图表
【发布时间】:2020-07-13 21:37:45
【问题描述】:

我有一个 R markdown 文件,希望在我的公司 Shiny 服务器上可用。

根据R Markdown: The Definitive Guide,我可以将runtime: shiny 添加到 Rmd 文件顶部的 YAML 元数据中,以将其转换为 Shiny 文档。我已经做到了,并且有效。如果我在 RStudio 中单击“运行文档”,它将运行 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。该文件使用 carspressure 内置数据集预先填充了示例 RMarkdown。我更改了 YAML 标头以包含 runtime: shiny。正如预期的那样,RStudio“编织”按钮被“运行文档”按钮替换,单击它会运行文档并按预期工作。尝试通过 Shiny Server 查看页面时会遇到同样的问题,即不包含绘图;一个损坏的图像图标取而代之。

更新 2:根据要求,这里是 Markdown 文件。它实际上是 RStudio 生成的示例文件,在 YAML 标头中添加了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 服务器是最新的;它已经有了修正建议的 glib2 版本。因此,我仍然收到此错误的事实是我的管理员将升级到 Red Hat。

更新 5:Red Hat 支持建议存在另一个 glib2 so 文件,结果证明是这种情况。删除此文件解决了问题!

【问题讨论】:

  • 你能把 .RMD 文件粘贴过来,我看看文件中是否有错误。

标签: r shiny r-markdown rhel


【解决方案1】:

所以,我认为您可能需要添加一些额外的代码,以使 Markdown 应用程序在 Shiny Server 环境中按预期运行

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

renderPlot({})

这给服务器一个命令来运行绘图,然后将其提供给 Shiny 文档。 Shiny 对 R 程序员来说是一件很奇怪的事情。

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

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

如果您在执行此操作后仍然卡住,请伸出手,我会尽力帮助您解决问题!

【讨论】:

  • 感谢@sconfluentus 的回复。您所指的示例是为降价文档添加交互性,这不是我想要做的。但你是对的,这值得一试。当我在renderPlot() 中结束对plot(pressure) 的调用时,它会用一个矩形替换损坏的图像图标,这是将绘图插入到渲染文档中的位置的轮廓。
  • 示例有交互性,但renderPlot()不依赖交互性。
【解决方案2】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-10-13
    • 2021-05-08
    • 1970-01-01
    • 2016-08-16
    • 1970-01-01
    • 1970-01-01
    • 2014-11-04
    相关资源
    最近更新 更多