使用shinyapps.io管理shiny app

当你不满足只是在RStudio上只能自己查看自己写的shinyapp时,但又没服务器作为媒介来分享自己的shiny程序,那么shinyapp.io是你不二的选择。

你不需要一台服务器,你也不需要花时间在云上配置一大堆东西并且管理你的shiny app,最主要还免费(当然也有付费版,功能更加齐全罢了;免费版的话我所知的一个缺点就是不能放太多程序在你的账户中运行)。

每个shiny程序是独立在你的账户中的,安全有保障。

创建shinyapps.io账户

shinyapps网址:http://www.shinyapps.io/

Sign Up,只需要邮箱 用户名 以及 密码即可

配置rsconnect
  1. 在R里面安装配置rsconnect

    install.packages('rsconnect')
    
  2. 然后输入你的账户信息

    rsconnect::setAccountInfo(name="<ACCOUNT>", token="<TOKEN>", secret="<SECRET>")
    

    name: 你的用户名
    token: 你登录进你的shinyapps.io后,Account -> Tokens里面的一长串字母和数字
    secret: 就是输入”

    其实获取上述代码简便方法就是:进入账户 -> Account -> Tokens,然后点击右边的Show按钮,copy出现的框内的代码即可

  3. 接下来就可以准备好你的shiny代码,比如我从官网拿了一段代码,将UI端的代码放入ui.R,服务器端代码放入server.R,两个代码如下:

    #ui.R
    library(shiny)
    library(ggplot2)
    
    dataset <- diamonds
    fluidPage(
        titlePanel("Diamonds Explorer"), 
        sidebarPanel(   
            sliderInput('sampleSize', 'Sample Size', min=1, max=nrow(dataset),
                value=min(1000, nrow(dataset)), step=500, round=0),
    
            selectInput('x', 'X', names(dataset)),
            selectInput('y', 'Y', names(dataset), names(dataset)[[2]]),
            selectInput('color', 'Color', c('None', names(dataset))),
    
            checkboxInput('jitter', 'Jitter'),
            checkboxInput('smooth', 'Smooth'),
    
            selectInput('facet_row', 'Facet Row', c(None='.', names(dataset))),
            selectInput('facet_col', 'Facet Column', c(None='.', names(dataset)))
        ),
        mainPanel(
            plotOutput('plot')
        )
    )
    
    
    #server.R
    library(shiny)
    library(ggplot2)
    
    function(input, output) {
        dataset <- reactive({
            diamonds[sample(nrow(diamonds), input$sampleSize),]
        })
    
        output$plot <- renderPlot({
            p <- ggplot(dataset(), aes_string(x=input$x, y=input$y)) + geom_point()
    
            if (input$color != 'None')
                p <- p + aes_string(color=input$color)
            facets <- paste(input$facet_row, '~', input$facet_col)
            if (facets != '. ~ .')
                p <- p + facet_grid(facets)
            if (input$jitter)
                p <- p + geom_jitter()
            if (input$smooth)
                p <- p + geom_smooth()
            print(p)
    
        }, height=700)
    }
    

    然后将两个文件放置于shiny文件夹中(这个自行命名)

  4. 最后一步就是上传你的shiny程序至shinyapps.io,两行代码即可

    library(rsconnect)
    deployApp("shiny文件夹的路径",account = "你的用户名(如果你一台电脑上只有一个用户配置过,这个可以省略的)")
    

    如果你是用RStudio的话,就有更加方便的方法: 当你在RStudio用runapp()展示你的程序时,可以点击右上角的Republish按钮,直接将shiny程序发布到你的账户中去(如有多个账户,可以选择你想要的那个)
    rstudio-shiny

最后可以自己在浏览器上查看shiny app了,如https://anlan.shinyapps.io/shiny/