Shiny

1 Basic

一个Shiny App在一个app.R里面,然后这个script在一个路径下(例:newdir/),运行这个app使用runApp("newdir/")。参数有display.mode = "showcase"

Shiny App由三部分组成,ui、server和shinyApp:

library(shiny)

# Define UI ----
ui <- fluidPage(
  
)

# Define server logic ----
server <- function(input, output) {
  
}

# Run the app ----
shinyApp(ui = ui, server = server)

2 User Interface

2.1 Lay Out

使用fluidPage函数可以创造一个适应于窗口大小的界面:

ui <- fluidPage(

)

界面可以包含一个主面板和一个侧面板:

ui <- fluidPage(

  titlePanel("主面板标题"),

  sidebarLayout(
  	positon = "right",     # 默认"left"
    sidebarPanel("侧面板"),
    mainPanel("主面板")
  )
  
)

高级的还有(待补):

navbarPage :有导航栏的多页交互界面
fuidRowcolumn:网格页面

2.2 HTML Content

对应函数可以使用HTML语法:

R codeHTML code
p("一段话")<p>text</p>
h1("一级标题")<h1>text</h1>h2, h3, ..., h6
a("超链接")<a>text</a>
br()<br/> 空行
div()<div/> 分割线
span(, style = "blabla: blabla; blabla:blabla")<span>blabla</span style = "blabla: blabla">
pre()<pre> 以固定宽度的字体按原样显示文本
code<code> 代码
img(src = "", height = )<img> 图片
strong()<strong> 粗体
em()<em> 斜体

3 Add control widgets

3.1 Control widgets

R codeOutcome
actionButton()Action Button
checkboxGroupInput()A group of check boxes
checkboxInput()A single check box
dateInput()A calendar to aid date selection
dateRangeInput()A pair of calendars for selecting a date range
fileInput()A file upload control wizard
helpText()Help text that can be added to an input form
numericInput()A field to enter numbers
radioButtons()A set of radio buttons
selectInput()A box with choices to select from
sliderInput()A slider bar
submitButton()A submit button
textInput()A field to enter text

widgets

3.2 Adding widgets

Widgets要加在面板函数里面,参数有name = "名字"label = "标签"

library(shiny)

# Define UI ----
ui <- fluidPage(
  titlePanel("Basic widgets"),
  
  fluidRow(
    
    column(3,
           h3("Buttons"),
           actionButton("action", "Action"),
           br(),
           br(), 
           submitButton("Submit")),
    
    column(3,
           h3("Single checkbox"),
           checkboxInput("checkbox", "Choice A", value = TRUE)),
    
    column(3, 
           checkboxGroupInput("checkGroup", 
                              h3("Checkbox group"), 
                              choices = list("Choice 1" = 1, 
                                             "Choice 2" = 2, 
                                             "Choice 3" = 3),
                              selected = 1)),
    
    column(3, 
           dateInput("date", 
                     h3("Date input"), 
                     value = "2014-01-01"))   
  ),
  
  fluidRow(
    
    column(3,
           dateRangeInput("dates", h3("Date range"))),
    
    column(3,
           fileInput("file", h3("File input"))),
    
    column(3, 
           h3("Help text"),
           helpText("Note: help text isn't a true widget,", 
                    "but it provides an easy way to add text to",
                    "accompany other widgets.")),
    
    column(3, 
           numericInput("num", 
                        h3("Numeric input"), 
                        value = 1))   
  ),
  
  fluidRow(
    
    column(3,
           radioButtons("radio", h3("Radio buttons"),
                        choices = list("Choice 1" = 1, "Choice 2" = 2,
                                       "Choice 3" = 3),selected = 1)),
    
    column(3,
           selectInput("select", h3("Select box"), 
                       choices = list("Choice 1" = 1, "Choice 2" = 2,
                                      "Choice 3" = 3), selected = 1)),
    
    column(3, 
           sliderInput("slider1", h3("Sliders"),
                       min = 0, max = 100, value = 50),
           sliderInput("slider2", "",
                       min = 0, max = 100, value = c(25, 75))
    ),
    
    column(3, 
           textInput("text", h3("Text input"), 
                     value = "Enter text..."))   
  )
  
)

# Define server logic ----
server <- function(input, output) {
  
}

# Run the app ----
shinyApp(ui = ui, server = server)

4 Display Reactive Output

4.1 Output in “ui” Part

Output也要加在面板函数里面

Output functionCreates
dataTableOutput("OutputName")DataTable
htmlOutput()raw HTML
imageOutput()image
plotOutput()plot
tableOutput()table
textOutput()text
uiOutput()raw HTML
verbatimTextOutput()text

4.2 Create Output in “server” Part

output$OutputName就是ui里面的*Output("OutputName")。使用render*()来得到这些output。

input$WidgetName就是ui里面对应widget中输入变量。

render functioncreates
renderDataTable()DataTable
renderImage()images (saved as a link to a source file)
renderPlot()plots
renderPrint()any printed output
renderTable()data frame, matrix, other table like structures
renderText()character strings
renderUI()a Shiny tag object or HTML
server <- function(input, output) {
  
  output$OutputName <- render*({ 
    somefunction(input$WidgetName)
  })
  
}

5 Use R Script and Data

在app文件夹里可以放helper.R然后使用source("helper.R")引用。在app文件夹下新建一个data文件夹,然后使用read*()引用。

6 Reactive Expression

reactive({ })使数据需要更新时才更新,即在*render()函数里的数据过时或*render()函数里input值有变化时。在reactive*render函数中调用reactive expression。

7 Share Your Apps

可以分享为r script(访问者需要安装R)或者一个web。

7.1 R Script

除了runApp()之外,还可以使用runUrl()runGitHub()runGist()

# install.packages("shiny")
library(shiny)
runApp("someapp")

打包zip上传到一个link可以使用runGitHub()

library(shiny)
runUrl( "<the weblink>")

上传Github可以使用:

runGitHub( "<your repository name>", "<your user name>")

匿名上传Github(<gist.github.com>):

runGist("<gist number>")

7.2 Web

shinyapps.io,Shiny Server,RStudio Connect

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Shiny下载处理程序(DownloadHandler)是R语言中的Shiny包中的一个重要组件,用于处理用户请求下载数据或文件。它允许用户通过Shiny应用界面选择要下载的数据或文件,并生成相应的下载链接,以便用户可以下载所需的文件。 在Shiny中,下载处理程序通常与服务器端代码结合使用,以处理用户提交的下载请求。当用户在Shiny应用中执行下载操作时,下载处理程序将获取所需的数据或文件,并生成一个包含下载链接的响应对象。用户可以通过访问该链接来下载所需的数据或文件。 使用下载处理程序可以方便地将数据或文件提供给用户,而无需在服务器端进行额外的数据传输。这对于需要将数据导出到本地文件或提供给其他用户的场景非常有用。 下面是一个简单的示例代码,演示了如何使用下载处理程序来处理文件下载: ```r library(shiny) shinyServer(function(input, output) { output$downloadLink <- downloadHandler( filename = function() { paste("data.csv", sep = "") }, content = function(file) { write.csv(data, file) } ) }) data <- data.frame(x = 1:10, y = 2:11) ``` 在这个示例中,我们创建了一个简单的Shiny应用,其中包含一个名为"downloadLink"的输出对象。当用户选择下载数据时,下载处理程序将生成一个名为"data.csv"的下载链接,并将其写入名为"file"的文件中。在此示例中,我们将一个包含一些数据的简单数据框作为示例数据。 需要注意的是,在使用下载处理程序时,需要确保服务器端代码正确处理下载请求,并生成正确的下载链接和文件内容。此外,还可以根据需要自定义下载处理程序的参数和行为,以满足特定的下载需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值