Sac*_*amp 3 r shiny shiny-server
我正在尝试使用闪亮创建一个Web应用程序.它需要我加载我在计算机上安装的软件包.例如:
## Contents ui.R:
library(shiny)
library(plyr)
shinyUI(pageWithSidebar(
headerPanel("Hello Shiny!"),
sidebarPanel(
sliderInput("obs",
"Number of observations:",
min = 0,
max = 1000,
value = 500)
),
mainPanel(
plotOutput("distPlot")
)
))
## Contents server.R:
library(shiny)
library(plyr)
shinyServer(function(input, output) {
output$distPlot <- renderPlot({
# generate an rnorm distribution and plot it
dist <- rnorm(input$obs)
hist(dist)
})
})
Run Code Online (Sandbox Code Playgroud)
如果我在本地运行它(使用runApp),但是当我尝试通过我的服务器(同一台计算机)运行它时,我得到的错误是plyr我没有安装包(或我尝试使用这种方式的任何其他包)的错误.我怎么能在闪亮的服务器中使用额外的包?
问题是,闪亮的服务器无法找到您安装的软件包,因为它将它们作为调用的其他用户运行shiny.此用户是在安装shiny-server时创建的
解决此问题的最简单(也是最安全的恕我直言)方法是使用以下步骤将软件包安装为闪亮的用户.
sudo passwd shiny,现在输入并确认密码su - shinyR使用$ R(没有sudo)调用install.packages("plyr")请注意,如果您在同一台计算机上安装了rstudio-server,则可以使用该接口执行步骤2-4.只需使用相同的域/ ip并使用:8787用于rstudio-server接口而不是:3838用于shiny-server.
从我的回答改编这里.
比较.libPaths()两种情况下的输出,并在服务器实例/脚本中进行相应调整.
例如,您可以在"您的"R包目录中包含服务器无法访问的包.在这种情况下,系统范围的软件包安装更受欢迎 - 例如Debian/Ubuntu上的默认软件包.