本地运行的应用程序在部署到 Shinyapps 服务器时遇到错误

Locally functioning app encounters an error when deployed to Shinyapps server

我做了一个shiny app用于分析某类科学数据。简而言之,该程序通过分析用户提供的 .csv 输入来工作,该输入具有针对已知参考样本的基因表达数据,以识别实验中未知细胞的类型。

我可以运行这个闪亮的应用程序在本地没有问题,但是当我将它托管在ShinyApps服务器上时,绘图刷功能遇到错误,不会导致完全崩溃,但会提示红色错误消息并且无法输出 table 摘要。

我查看了几个 SO 和 RStudio/Shiny 线程,发现由于文件编码的差异导致在不同平台上出现损坏而发生了类似的问题。这些话题对我没有帮助。

我尝试过的一些东西可以在 this, this, and this link.

中找到

我尝试使用 UTF-8 编码重新保存我的 server.Rui.R 文件以及输入 .csv 文件,但没有成功。

预期结果是:

错误如下所示:

有趣的是,我只在地块上刷某些项目时才观察到这个问题。在此处的示例图中,一些在刷牙时破坏代码的 X 值 CD4.CTRL.LNT.4.LN.BDCCD8.CTR.LN.

x的所有值均来自预分析,它们来自大型数据框。我看不到与有问题的数据点相关联的任何特殊字符。

显示问题的日志对我来说相当神秘:

2019-07-31T20:39:56.688902+00:00 shinyapps[1053041]: Server version: 1.7.6-6
2019-07-31T20:39:56.688904+00:00 shinyapps[1053041]: LANG: en_US.UTF-8
2019-07-31T20:39:56.916208+00:00 shinyapps[1053041]: Using jsonlite for JSON processing
2019-07-31T20:39:56.688945+00:00 shinyapps[1053041]: R version: 3.5.3
2019-07-31T20:39:56.922032+00:00 shinyapps[1053041]: 
2019-07-31T20:39:56.688946+00:00 shinyapps[1053041]: shiny version: 1.3.2
2019-07-31T20:39:56.922034+00:00 shinyapps[1053041]: Starting R with process ID: '23'
2019-07-31T20:39:56.688948+00:00 shinyapps[1053041]: httpuv version: 1.5.1
2019-07-31T20:39:56.688949+00:00 shinyapps[1053041]: rmarkdown version: (none)
2019-07-31T20:39:56.688966+00:00 shinyapps[1053041]: jsonlite version: 1.6
2019-07-31T20:39:56.688985+00:00 shinyapps[1053041]: RJSONIO version: (none)
2019-07-31T20:39:56.689180+00:00 shinyapps[1053041]: Using pandoc at /opt/connect/ext/pandoc2
2019-07-31T20:39:56.689013+00:00 shinyapps[1053041]: htmltools version: 0.3.6
2019-07-31T20:39:56.688965+00:00 shinyapps[1053041]: knitr version: (none)
2019-07-31T20:39:56.950579+00:00 shinyapps[1053041]: 
2019-07-31T20:39:56.950581+00:00 shinyapps[1053041]: Listening on http://127.0.0.1:33950

....

Warning: Error in gsub: input string 1 is invalid in this locale
2019-07-31T20:43:38.699011+00:00 shinyapps[1053041]:   120: gsub
2019-07-31T20:43:38.699022+00:00 shinyapps[1053041]:    93: output$brushtop5
2019-07-31T20:43:38.699014+00:00 shinyapps[1053041]:   119: sanitize
2019-07-31T20:43:38.699051+00:00 shinyapps[1053041]:    13: runApp
2019-07-31T20:43:38.699015+00:00 shinyapps[1053041]:   118: print.xtable
2019-07-31T20:43:38.699053+00:00 shinyapps[1053041]:    12: fn
2019-07-31T20:43:38.699021+00:00 shinyapps[1053041]:    94: origRenderFunc
2019-07-31T20:43:38.699016+00:00 shinyapps[1053041]:   109: transform
2019-07-31T20:43:38.699055+00:00 shinyapps[1053041]:     7: connect$retry
2019-07-31T20:43:38.699017+00:00 shinyapps[1053041]:   108: func
2019-07-31T20:43:38.699056+00:00 shinyapps[1053041]:     6: eval
2019-07-31T20:43:38.699018+00:00 shinyapps[1053041]:   106: f
2019-07-31T20:43:38.699057+00:00 shinyapps[1053041]:     5: eval
2019-07-31T20:43:38.699019+00:00 shinyapps[1053041]:   105: Reduce
2019-07-31T20:43:38.699019+00:00 shinyapps[1053041]:    96: do
2019-07-31T20:43:38.699020+00:00 shinyapps[1053041]:    95: hybrid_chain
2019-07-31T20:43:39.087982+00:00 shinyapps[1053041]:   118: print.xtable
2019-07-31T20:43:39.087989+00:00 shinyapps[1053041]:    94: origRenderFunc
2019-07-31T20:43:39.087990+00:00 shinyapps[1053041]:    93: output$brushtop5
2019-07-31T20:43:39.087991+00:00 shinyapps[1053041]:    13: runApp
2019-07-31T20:43:39.087992+00:00 shinyapps[1053041]:    12: fn
2019-07-31T20:43:39.087984+00:00 shinyapps[1053041]:   108: func
2019-07-31T20:43:39.087994+00:00 shinyapps[1053041]:     7: connect$retry
2019-07-31T20:43:39.087986+00:00 shinyapps[1053041]:   105: Reduce
2019-07-31T20:43:39.088031+00:00 shinyapps[1053041]:     6: eval
2019-07-31T20:43:39.087987+00:00 shinyapps[1053041]:    96: do
2019-07-31T20:43:39.088034+00:00 shinyapps[1053041]:     5: eval


有什么解决这个问题的想法吗?谢谢!

我解决了这个问题。原来我在数据框的一列中有一个非 ASCII 字符 (ï)。

我在为这个问题做代表时注意到了这一点。我之前没有意识到这个问题,因为这些特殊字符位于应用程序使用的 .rds 文件之一中。在保存这些数据帧时,RStudio 对其进行相应编码以正确显示内容,但这种编码在 Shiny 服务器端造成了问题,因为它要求其所有组件都采用 UTF-8 编码。

我想如果我确保数据框在早期没有特殊字符或使用会覆盖这些字符的 UTF-8 编码,我就不会遇到这个问题。我会将此问题标记为已回答,但如果您有其他解决方案,请随时添加评论。