部署 R Shiny 应用程序时加载包时出现问题
Posted
技术标签:
【中文标题】部署 R Shiny 应用程序时加载包时出现问题【英文标题】:Problem loading packages while deploying an R Shiny app 【发布时间】:2021-12-25 16:18:57 【问题描述】:我试图部署一个 R Shiny 应用程序,当我在本地运行它时它可以完美运行。但是当我部署应用程序时,它会在一些输出中显示错误消息:“Error: An error has occurred. Check your logs or contact the app author for clarification.
”。
看了几个帖子,我觉得跟包的加载有关。
我正在使用以下软件包:
library(shiny)
library(magrittr)
library(shinyjs)
library(DT)
library(ggthemes)
library(shinythemes)
library(r2symbols)
library(caret)
# install.packages("PresenceAbsence")
library(glmnet)
library(tidyverse)
# install.packages("devtools")
我在从全新会话部署应用程序时收到以下警告。我不是特别清楚出了什么问题(因为该应用程序在我的 R 会话上运行)。您能否向我建议一些我应该尝试让应用程序在服务器上运行的事情?
Loading required package: shiny
Warning: package ‘shiny’ was built under R version 3.6.3
Warning: package ‘shinyjs’ was built under R version 3.6.3
You can use shinyjs to call your own javascript functions:
https://deanattali.com/shinyjs/extend
Attaching package: ‘shinyjs’
The following object is masked from ‘package:shiny’:
runExample
The following objects are masked from ‘package:methods’:
removeClass, show
Warning: package ‘DT’ was built under R version 3.6.3
Attaching package: ‘DT’
The following objects are masked from ‘package:shiny’:
dataTableOutput, renderDataTable
Warning: replacing previous import ‘vctrs::data_frame’ by ‘tibble::data_frame’ when loading ‘dplyr’
Warning: package ‘ggthemes’ was built under R version 3.6.3
Warning: package ‘shinythemes’ was built under R version 3.6.3
Warning: package ‘r2symbols’ was built under R version 3.6.3
Attaching package: ‘r2symbols’
The following object is masked from ‘package:ggplot2’:
sym
Warning: package ‘caret’ was built under R version 3.6.3
Loading required package: lattice
Warning: package ‘lattice’ was built under R version 3.6.3
Attaching package: ‘PresenceAbsence’
The following objects are masked from ‘package:caret’:
sensitivity, specificity
Warning: package ‘glmnet’ was built under R version 3.6.3
Loading required package: Matrix
Loaded glmnet 4.0-2
Warning: package ‘tidyverse’ was built under R version 3.6.3
-- Attaching packages -------------------------------------------------------------------------- tidyverse 1.3.0 --
v tibble 3.0.4 v dplyr 1.0.0
v tidyr 1.0.2 v stringr 1.4.0
v readr 1.3.1 v forcats 0.4.0
v purrr 0.3.3
Warning: package ‘tibble’ was built under R version 3.6.3
Warning: package ‘dplyr’ was built under R version 3.6.3
-- Conflicts ----------------------------------------------------------------------------- tidyverse_conflicts() --
x tidyr::expand() masks Matrix::expand()
x tidyr::extract() masks magrittr::extract()
x dplyr::filter() masks stats::filter()
x dplyr::lag() masks stats::lag()
x purrr::lift() masks caret::lift()
x tidyr::pack() masks Matrix::pack()
x purrr::set_names() masks magrittr::set_names()
x dplyr::sym() masks r2symbols::sym(), ggplot2::sym()
x tidyr::unpack() masks Matrix::unpack()
Listening on http://127.0.0.1:6757
更多详情:
我还在服务器部分提到了我的输出,它在部署到 Shiny 服务器时不会显示,但在从本地 PC 运行时可以工作。 pred_prob_func()
使用来自 caret
包的随机森林,并使用随机森林模型 (ranger
) 获得预测概率。我什至不确定包加载是一个问题,但我想是的。但是,我不知道为什么它可以在我的 PC 上运行,而不是在 Shiny 服务器上运行。版本问题?
输出:
# Heatmap predicted probabilities
output$Heatmap_predicted_probabilities <- renderPlot(
plot(x=seq(0,1,0.01), y=rep(0,101), main="Heatmap of predicted probabilities", xlab="The square cross symbol represents the predicted probability based on input values on the dashboard", ylab="", xlim=c(0,1), ylim=c(-0.1,0.1), yaxt="n", bty="n", pch=15, cex=20, col=hsv(0.05, seq(0,1,length.out = 101), 0.80))
points(x=pred_prob_func(input_list())$pred_prob, y=0, lwd=2, pch=7, cex=4)
)
【问题讨论】:
你似乎有很多冲突。请确保您在函数前面附加了包名称。例如,您可以使用dplyr::filter(...)
,而不仅仅是filter(...)
。
@YBS 谢谢!我检查并发现在部署到 Shiny 服务器时输出的部分不起作用。我已经在上面的“更多详细信息”下添加了它们。
我尝试安装最新版本的 R,但现在我收到一条错误消息“错误:未处理的异常:子任务 1049338094 失败:构建映像时出错:R 版本 4.1.2 当前不可用执行暂停”
在您的情况下,您应该为以下函数指定调用的包:sym
、sensitivity
、specificity
。例如,调用package::sensitivity
,其中package
是您的程序中实际感兴趣的包。另外,请使用DTOutput
和renderDT
,而不是dataTableOutput
、renderDataTable
嗨,我刚刚检查了 Shiny 应用程序还不支持最新的 R 版本。所以,我又重新使用了另一个旧版本的 R。
【参考方案1】:
我找到了解决方案,我想我会把它发布在这里,以供将来可能面临同样问题的其他人使用。显然,这不是版本的问题。当我只调用“caret
”包运行应用程序时,它在我的本地 PC 上运行良好。但是上传到 Shiny 服务器时它不起作用。我意识到仅调用“caret
”包是不够的,但我还需要调用“ranger
”库,因为我正在使用“caret
”和“ranger
”进行随机森林。虽然它无需在我的本地 PC 上单独调用 'ranger
' 即可工作,但当我添加这两行时,该应用程序只能在服务器上顺利运行:
library(ranger)
library(caret)
【讨论】:
以上是关于部署 R Shiny 应用程序时加载包时出现问题的主要内容,如果未能解决你的问题,请参考以下文章
R Shiny 在后台加载隐藏的侧边栏(使用 bs4Dash 包)
R Shiny:无法检索 vertica DB 的 JDBC 结果集
在 R 中加载 Lime 包时出现错误“对象‘coef.cv.glmnet’不是由‘namespace:glmnet’导出”-