R 服务器中缺少包

R 服务器中缺少包,r,shiny,shiny-server,R,Shiny,Shiny Server,我正在尝试使用shiny创建一个web应用程序。它要求我加载已安装在计算机上的软件包。例如: ## Contents ui.R: library(shiny) library(plyr) shinyUI(pageWithSidebar( headerPanel("Hello Shiny!"), sidebarPanel( sliderInput("obs", "Number of observations:",

我正在尝试使用shiny创建一个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)
  })
})
##内容ui.R:
图书馆(闪亮)
图书馆(plyr)
shinyUI(带侧栏的页面)(
headerPanel(“你好,闪亮!”),
侧栏面板(
滑块输入(“obs”,
“观察次数:”,
最小值=0,
最大值=1000,
数值=500)
),
主面板(
plotOutput(“distPlot”)
)
))
##Content server.R:
图书馆(闪亮)
图书馆(plyr)
shinyServer(功能(输入、输出){

output$distPlot比较两种情况下
.libpath()
的输出,并在服务器实例/脚本中进行相应调整


例如,您可以将包放在“您的”服务器无法访问的R程序包目录。在这种情况下,最好安装系统范围的程序包,例如Debian/Ubuntu上的默认程序包。

为什么需要Plyr?代码中没有任何内容使用它;但无论如何,您可以通过运行R,然后安装.packages('Plyr'),在Linux R安装上安装程序包;

问题是Shining server找不到您安装的软件包,因为它以另一个名为
Shining
的用户的身份运行这些软件包。此用户是在安装Shining server时创建的

解决这个问题最简单(也是最安全的IMHO)的方法是只以闪亮用户的身份安装软件包,使用以下步骤

  • 使用
    sudo passwd
    为用户设置密码,现在输入并确认密码
  • 使用:
    su-shinny
  • 使用
    $R
    调用
    R
    (不带sudo)
  • 安装所需的软件包,在本例中:
    Install.packages(“plyr”)
  • 请注意,如果在同一台计算机上安装了rstudio服务器,则可以使用该接口执行步骤2-4。只需转到相同的域/ip,并使用:8787作为rstudio服务器接口,而不是:3838作为服务器接口


    根据我的回答改编。

    我已经从R3.2升级到了3.4,面临着同样的问题,然后我在R/x86_64-pc-linux-gnu-library/中创建了一个名为3.4的文件夹,并复制了3.2文件夹中的所有内容(该文件夹已经位于同一位置).

    这里可能有一个不会弄乱系统库的解决方案。请将以下代码放在
    服务器.R
    的开头

    user <- unname(Sys.info()["user"])
    if (user == "shiny") {
    
      # Set library locations
      .libPaths(c(
        "/path/to/your/own/library"
      )
      )
    
    }
    

    user如果程序包安装在您的R库中。使其在Shining server上运行的最简单方法是指示程序包所在的库目录。类似于:
    library(plyr,lib.loc=“/usr/local/lib/R/site library”)
    。如果安装了R-Studio,则可以使用
    .libpath()查看目录

    一个简单的检查方法实际上是查看
    sudo R
    ,然后查看一下(
    库(MyPotentialMissingPackage)
    )。如果需要,您也可以从那里安装丢失的包。Do.Not.Start.R.As.sudo.Ever。嗯,这看起来很糟糕,但我能问一下:为什么?:-)你真的不想以root身份运行任何东西,因为如果该程序因任何原因被破坏,那么你的整个服务器现在都被破坏了。因此,如果R中存在任何安全漏洞,当以root身份运行时,你现在允许这些威胁让坏进程/人/等接管你的机器。尝试步骤1,我得到“passwd:Unknown user name'shinny.”-有什么解决方案吗?@maia,这个帐户应该在您安装
    shinny服务器时创建,但是,您可以使用:
    useradd shinny
    手动创建。我希望可以。您不需要为用户添加密码。只需从第2步开始,
    su-shinny
    。同意,但如果您要使用该用户,它将那是个好主意