搜索
查看: 2381|回复: 1

上传shiny程序至shinyapps.io

[复制链接]

29

主题

131

帖子

1208

积分

金牌会员

Rank: 6Rank: 6

积分
1208
发表于 2017-6-6 17:26:43 | 显示全部楼层 |阅读模式
本帖最后由 anlan 于 2017-6-6 19:45 编辑

当你不满足只是在RStudio上只能自己查看自己写的shinyapp时,但又没服务器作为媒介来分享自己的shiny程序,那么shinyapp.io是你不二的选择。
你不需要一台服务器,你也不需要花时间在云上配置一大堆东西并且管理你的shiny app,最主要还免费(当然也有付费版,功能更加齐全罢了;免费版的话我所知的一个缺点就是不能放太多程序在你的账户中运行)。
每个shiny程序是独立在你的账户中的,安全有保障。
创建shinyapps.io账户
shinyapps网址:http://www.shinyapps.io/
Sign Up,只需要邮箱 用户名 以及 密码即可
配置rsconnect
  • 在R里面安装配置rsconnect
    install.packages('rsconnect')
  • 然后输入你的账户信息
    rsconnect::setAccountInfo(name="<ACCOUNT>", token="<TOKEN>", secret="<SECRET>")
    name: 你的用户名
    token: 你登录进你的shinyapps.io后,Account -> Tokens里面的一长串字母和数字
    secret: 就是输入”“  
    其实获取上述代码简便方法就是:进入账户 -> Account -> Tokens,然后点击右边的Show按钮,copy出现的框内的代码即可
  • 接下来就可以准备好你的shiny代码,比如我从官网拿了一段代码,将UI端的代码放入ui.R,服务器端代码放入server.R,两个代码如下:

      
[AppleScript] 纯文本查看 复制代码
## 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')
  )
)
      
[AppleScript] 纯文本查看 复制代码
## 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文件夹中(这个自行命名)            最后一步就是上传你的shiny程序至shinyapps.io,两行代码即可
   
[AppleScript] 纯文本查看 复制代码
library(rsconnect) 
deployApp("shiny文件夹的路径",account = "你的用户名(如果你一台电脑上只有一个用户配置过,这个可以省略的)")

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



这个shinyapp的url地址: https://anlan.shinyapps.io/shiny/
大家也可以去尝试下,最多半小时搞定





回复

使用道具 举报

634

主题

1182

帖子

4030

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
4030
发表于 2017-6-6 17:53:06 | 显示全部楼层
很好,给一个你的app的url我们耍一耍吧
你这个问题很复杂,需要打赏,请点击 http://www.bio-info-trainee.com/donate 进行打赏,谢谢
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|生信技能树    

GMT+8, 2019-5-27 04:09 , Processed in 0.067085 second(s), 27 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.