日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

R语言shiny包的学习

發(fā)布時(shí)間:2023/12/19 综合教程 36 生活家
生活随笔 收集整理的這篇文章主要介紹了 R语言shiny包的学习 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

shiny是一個(gè)R語言中的網(wǎng)絡(luò)應(yīng)用程序框架,可以將你的數(shù)據(jù)分析變成交互式的網(wǎng)絡(luò)應(yīng)用(web apps),簡(jiǎn)單又實(shí)用。

基本用法

一個(gè)shiny應(yīng)用可以分為兩部分:前端和后端,其實(shí)所有的shiny應(yīng)用都是基于以下的模版:

ui = fluidPage()
server = function(input, output) {}
shinyApp(ui = ui, server =server )

其中,fluidPage中主要有兩部分:輸入函數(shù),和輸出函數(shù)

輸入函數(shù)

輸入函數(shù)基本上都是以 *input的形式,主要有以下

按鈕 actionButton()、submitButton()
單個(gè)選框 checkboxInput()
一組選框 checkboxGroupInput()
日期輸入 dateInput()
日期范圍 dateRangeInput()
文件上傳 fileInput()
數(shù)字輸入 numericInput()
密碼輸入 passwordInput()
單選框 radioButtons()
下拉選擇框 selectInput()
滾動(dòng)條 sliderInput()
文字輸入 textInput()

輸出函數(shù),有以下幾種:

一個(gè)可交互表 datatableOutput()
原始的HTML htmlOutput()
圖片 imageOutput()
畫圖 plotOutput(),plotOutput("hist")
表 tableOutput()
文字 textOutput()
Shiny UI元素 uiOutput()
文字 verbatimTextOutput()

而將輸入轉(zhuǎn)化為輸出的函數(shù),便是server()函數(shù)了,寫server()函數(shù)有3步:

用output$**來存儲(chǔ)要輸出的對(duì)象,例如output$hist, 其中hist就是plotOutput中所命名的
用render*()來創(chuàng)建要輸出的對(duì)象,其中render*()函數(shù)有以下各種:renderDataTable(),renderImage(),renderPlot(),renderPrint(),renderTable(),renderText(),renderUI()
用input$* 來連接調(diào)用input中的參數(shù)

shiny的基本用法就是這樣了,下面是個(gè)完整的小案例:

library(shiny)

ui <- fluidPage(
    sliderInput(inputId = "num",
        label = "Choose a number",
        value = 25, min = 1, max = 100),
    plotOutput("hist")
) 

server <- function(input, output) {
    output$hist <- renderPlot({
        hist(rnorm(input$num))
    })
}

shinyApp(ui = ui, server = server)    

更多的shiny應(yīng)用案例見https://github.com/rstudio/shiny-examples

另外,響應(yīng)表達(dá)式的兩種方法(例如用于生成一組隨機(jī)數(shù),在不同的地方調(diào)用,保證是調(diào)用的同一組數(shù)):

像調(diào)用函數(shù)一樣調(diào)用響應(yīng)表達(dá)式,例如:

反應(yīng)式表達(dá)式緩存它們的值(表達(dá)式將返回其最近的值,除非它已經(jīng)失效)

此外,還有一些其他可能會(huì)用到的函數(shù):

將結(jié)果作為非反應(yīng)性值返回:isolate({}),例如hist(rnorm(input$num),main = isolate({input$title}))
observeEvent()監(jiān)聽事件 observeEvent(input$clicks, { print(input$clicks)}), 更多button使用方法見此(點(diǎn)擊)
observe()觸發(fā)代碼在服務(wù)器上運(yùn)行,使用語法與render*(), reactive(), and isolate()相同
eventReactive()延遲按鈕事件等,用法與reactive()相同
reactiveValues()創(chuàng)建一個(gè)響應(yīng)值的列表來進(jìn)行編程操作,例如

嵌入HTML

嵌入HTML的兩種方法:

用tags$*,支持很多,如a(),br(),code(),em(),h*(),hr(),img(),p(),strong()等
直接用HTML(" "),引號(hào)里面即為HTML的原始代碼

布局

布局的兩個(gè)主要函數(shù):

fluidRow()創(chuàng)建一行,每一個(gè)新行置于上一行的下面
column()在一行中添加列,每一個(gè)列從左邊起,總共有12列,可用width指定需要幾列的寬度,用offset指定從左邊的偏移列數(shù)

面板布局,有以下多種:

absolutePanel(),絕對(duì)布局
conditionalPanel(),一個(gè)JS表達(dá)式?jīng)Q定是否顯示
fixedPanel(),面板固定到瀏覽器窗口,不滾動(dòng)頁面
headerPanel(),標(biāo)題面板,同pageWithSidebar()一起用
inputPanel(),灰色背景,適用于一組輸入
mainPanel(),顯示輸出的面板,可同pageWithSidebar()一起用
navlistPanel(),用于顯示多個(gè)堆疊的tabPanels()面板,使用側(cè)邊欄導(dǎo)航
sidebarPanel(),用于顯示輸入的側(cè)欄面板,可同pageWithSidebar()一起使用
tabPanel(),堆疊面板,同navlistPanel(),tabsetPanel()一起使用
tabsetPanel(),用于顯示多個(gè)堆疊的tabPanels()面板,使用側(cè)邊欄導(dǎo)航
titlePanel(),標(biāo)題面板,同pageWithSidebar()一起用
wellPanel(),灰色背景的面板

還有一些預(yù)定義好的一些布局:

sidebarLayout( sidebarPanel(), mainPanel() ),左邊標(biāo)題欄,右邊是主體
ui = fixedPage( fixedRow( column(5,#etc.) ) ),固定頁面,默認(rèn)寬度是1170px
navbarPage() 把不同的tab面板堆疊,面板欄在上部,需要title參數(shù)。內(nèi)部可結(jié)合tabPanel()使用
navbarMenu(),不同的tab的下拉菜單,可用在navbarPage內(nèi)部
dashboardPage(),來自shinydashboard包,內(nèi)部同dashboardHeader()(上方標(biāo)題),dashboardSidebar()(左方側(cè)欄),dashboardBody()(中間主體),更多見此

樣式

shiny所用的是Bootstrap 3 CSS框架。

嵌入css樣式有3中方法:

鏈接到外部的css文件

在你的App文件夾下創(chuàng)建www文件夾,并將css文件放置其中
然后用fluidPage()的theme屬性設(shè)置為css文件的名字,或者用tags$head進(jìn)行設(shè)置,如下tags$head( tags$link( rel = "stylesheet", type = "text/css", href = "file.css" ) )

在header中寫全局css樣式,例如tags$head( tags$style(HTML(" p { color:red; } ")) ),或者直接用includeCSS("file.css")
在tag的style屬性中添加個(gè)體的css樣式,例如tags$h1("Title", style = "color:red;")

shiny的中文教程見此,其中有關(guān)于從客戶端獲取數(shù)據(jù)的內(nèi)容。

此外,使用時(shí)shiny時(shí)經(jīng)常要使用DT包展示數(shù)據(jù)表格,其常用鏈接:DT包介紹,DT的API,DT常用設(shè)置

總結(jié)

以上是生活随笔為你收集整理的R语言shiny包的学习的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。