Paano Bumuo ng Interactive Web Apps gamit ang Shiny sa R

Paano Bumuo Ng Interactive Web Apps Gamit Ang Shiny Sa R



Dahil dito sa R ​​Shiny framework, isang bundle mula sa RStudio, ang paggawa ng mga dynamic na web app gamit ang R ay medyo madali. Ang pakinabang ng Shiny ay ginagawa nitong posible na ilagay ang iyong R code sa web, na ginagawa itong mas naa-access sa mas malawak na hanay ng mga user. Sa R Shiny, makakagawa ka ng napakalakas na ulat ng data at visual na nagbibigay-daan sa user na suriin ang set ng data. Kasama ng Makintab na mga bahagi, ang mga elemento ng HTML ay maaaring gamitin upang magdisenyo ng nilalaman ng programa. Ang artikulo ngayong araw ay gagabay sa iyo sa proseso ng pagbuo ng isang interactive na Web application na gumagamit ng R's Shiny package. Para dito, tiyaking na-install na ang 'RStudio'.

I-install ang Shiny Package sa RStudio

Bago lumipat patungo sa paglikha ng isang interactive na web application sa loob ng RStudio, dapat ay mayroon na tayong naka-install na 'Makintab' na package dito. Para dito, kailangan mong palawakin ang menu na “Tools” ng RStudio na sinusundan ng opsyong “Install Packages”. Sa loob ng binuksan na window, kailangan mong banggitin ang package na gusto mong i-install, ibig sabihin, 'makintab,' at i-tap ang 'I-install' na buton. I-install ng RStudio ang makintab na package sa RStudio console.







Magsimula sa Shiny sa R

Upang makapagsimula sa Shiny sa R, kailangan mong lumikha ng bagong R file gamit ang menu na 'File' na matatagpuan sa unang lugar ng RStudio. Palawakin ito at gamitin ang opsyong “Bagong File” na sinusundan ng opsyong “R Script”. Ang “untitled” script file ay bubuksan sa RStudio. Palitan ang pangalan nito bilang isang 'R' na file sa iyong nais na lokasyon.



Ngayon, i-load ang mga kinakailangang pakete na kinakailangan upang bumuo ng isang interactive na application sa R, ibig sabihin, gamit ang 'library' function ng R. Ang 'if' na mga pahayag ay ginagamit upang i-install ang mga pakete na hindi pa naka-install dati. Ang Shiny package ay ginagamit upang bumuo ng isang interactive na interface para sa mga web application kasama ang ilang mga graphical na visualization. Ang package na 'dplyr' ay pangunahing ginagamit upang mapagaan ang pagmamanipula ng data sa R ​​sa pamamagitan ng paggamit ng ilang kapaki-pakinabang na function.



Panghuli, ang package na 'ggplot2' ay na-load bilang isang mahusay na mapagkukunan ng visualization ng data sa pamamagitan ng paggawa ng mga customized at mahuhusay na graph.





kung ( ! requireNamespace ( 'makintab' , tahimik = TOTOO ) ) {

i-install. mga pakete ( 'makintab' )

}

kung ( ! requireNamespace ( 'dplyr' , tahimik = TOTOO ) ) {

i-install. mga pakete ( 'dplyr' )

}

kung ( ! requireNamespace ( 'ggplot2' , tahimik = TOTOO ) ) {

i-install. mga pakete ( 'ggplot2' )

}

aklatan ( makintab )

aklatan ( dplyr )

aklatan ( ggplot2 )

Bumuo ng Interactive Exam Grading System

Sa loob ng tutorial na ito, gagawa kami ng 'Exam Grading System' para makuha ng mga mag-aaral ang kanilang mga nakamit na marka sa pamamagitan ng mga markang nakuha mula sa 100. Ang ibinigay na script ay ang 'ui' na bahagi ng isang Shiny app na tumutukoy sa disenyo at hitsura ng ang programa. Ang programa ay bumubuo ng isang fluidPage, isang naaangkop na disenyo na maaaring i-scale upang ayusin para sa window ng browser.

Ang isang 'titlePanel' at isang 'sidebarLayout' ay ang mga supling ng 'fluidPage'. Ang pamagat ng 'Exam Grading System' ng programa ay ang lahat ng ipinapakita sa 'titlePanel'. Ang 'sidebarPanel' at isang 'mainPanel' ay ang dalawang seksyon na ginagamit ng 'sidebarLayout' upang hatiin ang application. Ang isang pares ng mga input ay kasama sa 'sidebarPanel': isang 'textAreaInput' na pinangalanang 'score' kasama ang isang 'actionButton' na pinangalanang 'calculate'.



Isang puntos bawat linya ang maaaring ipasok para sa bawat mag-aaral gamit ang 'textAreaInput'. Maaaring simulan ang pagtatasa ng grado sa pamamagitan ng paggamit ng “actionButton”. Ang isang pares ng mga output ay naroroon sa 'mainPanel': isang 'tableOutput' na pinangalanang 'Result' kasama ang isang 'plotOutput' na pinangalanang 'ResultGraph'. Parehong ipapakita ng 'tableOutput' at 'plotOutput' ang mga natuklasan ng pagkalkula sa anyo ng isang graph.

ui <- fluidPage (

titlePanel ( 'Sistema ng Pagmamarka ng Pagsusulit' ) ,
sidebarLayout (
sidebarPanel (
textAreaInput ( 'iskor' , 'Ipasok ang Mga Marka para sa mga Mag-aaral (isa bawat linya):' , '' ) ,
actionButton ( 'kalkulahin' , 'Kalkulahin Natin ang mga Grado' )
) ,
mainPanel (
tableOutput ( 'Resulta' ) ,
plotOutput ( 'ResultGraph' )
) ) )

Ang paraan ng server ay nagtatatag ng server-side logic ng application. Ang mga marka para sa mga mag-aaral ay unang iniimbak sa isang reaktibong variable na pinangalanang 'data'. Para dito, ang 'calculate' na buton ay sinusubaybayan ng 'observeEvent' na paraan ng R. Matapos ma-trigger ang button, ang code sa simula ay nagko-convert ng mga value na ipinasok sa text field input sa mga numerical na halaga.

Ang bawat puntos ay sinusundan ng isang line break gamit ang '\n' upang maglagay ng bagong marka sa pinakasusunod na linya. Ang pamamaraan ay naglalagay ng anumang marka na makikita nito sa variable na 'data'. Kung ang isang user ay walang input na marka, ang pamamaraan ay nagpapakita ng isang mensahe na may error.

server <- function ( input, output ) {

datos <- reactiveVal ( WALA )

observeEvent ( input$calculate, {

puntos <- bilang. numeric ( unlist ( strsplit ( input$score, ' \n ' ) ) )

kung ( haba ( puntos ) > 0 ) {

datos ( puntos )

} iba pa {

datos ( WALA )

showModal ( modalDialog (

pamagat = 'Error' ,

'Error: Mangyaring magdagdag ng halaga!' ,

madalingIsara = TOTOO

) )

}

} )

Dalawang output, 'output$Result' kasama ang 'output$ResultGraph', ay tinukoy upang ipakita ang mga marka ng mag-aaral at nakamit na mga marka. Ang renderTable() dynamic na paraan ay gumagawa ng talahanayan ng data ng mga marka at marka ng pagsusulit ng mag-aaral na may label na 'output$Result'. Ang renderPlot() na paraan, na reaktibo din, ay bumubuo ng bar graph para sa mga marka ng mag-aaral at sine-save ito sa 'output$ResultGraph' na output nang katulad.

Ang mga ito, samakatuwid, ay susuriin sa tuwing mag-a-update ang data ng input. Tinutukoy ng if (!is.null(data())) expression kung null o hindi ang data na tinatanggap. Isinasagawa ang script ng statement na “if” kung hindi ito walang laman. Isang vector ng mga marka para sa mga mag-aaral ang bumubuo sa input na 'data'. Ang bawat mag-aaral ay binibigyan ng marka batay sa kanilang marka gamit ang case_when() na pamamaraan. Ang isang data frame na naglalaman ng mga marka ng mag-aaral at mga marka ng pagsusulit ay ginawa gamit ang data.frame() na pamamaraan. Ang mga sumusunod na column ay idinaragdag sa data frame: 'Mag-aaral', 'Iskor', at 'Grade'. Ang pamamahagi ng grado ay pinagsama-sama sa isang talahanayan na tinatawag na 'GradeCount' gamit ang table() method.

output$Resulta <- renderTable ( {

kung ( ! ay. wala ( datos ( ) ) ) {

mga grado <- kaso_kailan (

datos ( ) > 80 ~ 'A' ,

datos ( ) > 60 ~ 'B' ,

datos ( ) > 40 ~ 'C' ,

datos ( ) > 30 ~ 'D' ,

TOTOO ~ 'F'

)

datos. frame ( Mag-aaral = 1 : haba ( datos ( ) ) , Iskor = datos ( ) , Marka = mga grado )

}

} )

output$ResultGraph <- renderPlot ( {

kung ( ! ay. wala ( datos ( ) ) ) {

mga grado <- kaso_kailan (

datos ( ) > 80 ~ 'A' ,

datos ( ) > 60 ~ 'B' ,

datos ( ) > 40 ~ 'C' ,

datos ( ) > 30 ~ 'D' ,

TOTOO ~ 'F'

)

GradeCount <- mesa ( mga grado )

Ang bar chart ay ginawa gamit ang 'ggplot2' library. Bilangin (ang kabuuang bilang ng mga mag-aaral na nakakuha ng bawat grado) at ang hanay na Marka ay nilikha sa isang DataFrame. Ang isang bar graph na may 'Grade' na data sa 'x-axis' at ang 'Count' na data sa 'y-axis' ay ginawa gamit ang geom_bar() method. Ang opsyon na stat = 'identity' ay nagtuturo sa ggplot2 na gamitin ang aktwal na data nang walang anumang uri ng pagbabago. Ang isang pamagat, isang x-axis na label, at isang y-axis na label ay idinaragdag lahat sa pamamagitan ng 'labs' na paraan. Ang mga kulay ng bar ay itinalaga gamit ang scale_fill_manual() na pamamaraan. Ang mga hindi kinakailangang linya ng grid at mga bahagi ng overlay ay tinanggal gamit ang theme_minimal() na pamamaraan. Ang shinyApp(ui, server) na paraan ay bumubuo ng isang app.

ggplot ( datos = datos. frame ( Grade = mga pangalan ( GradeCount ) , Bilang = bilang. numeric ( GradeCount ) ) ,
aes ( x = Grade, at = Bilangin, punan = Grade ) ) +
geom_bar ( stat = 'pagkakakilanlan' ) +
mga lab ( pamagat = 'Pamamahagi ng Marka' ,
x = 'Grade' ,
at = 'Bilang' ) +
manu-manong_scale_fill ( mga halaga = c ( 'A' = 'berde' , 'B' = 'purple' , 'C' = 'pink' ,
'D' = 'orange' , 'F' = 'pula' ) ) +
theme_minimal ( )
}
} )
}
shinyApp ( ui, server )

Sa pagpapatakbo ng code na ito, nakakuha kami ng interactive na interface kung saan nagdagdag kami ng ilang marka at nag-click sa button na 'Kalkulahin Natin ang mga Grado'.

Ang talahanayan na naglalaman ng mga marka at marka ng mag-aaral ay ipinapakita, na sinusundan ng Bar graph ng pamamahagi ng grado sa iba't ibang kulay.

Konklusyon

Ipinapaliwanag ng gabay na ito ang kahalagahan ng paggamit ng Shiny package sa wikang R sa pamamagitan ng RStudio. Para madagdagan ang aming paliwanag, gumawa kami ng interactive na web application para sa sistema ng pagmamarka ng mga mag-aaral sa R ​​code sa pamamagitan ng paggamit ng 'Shiny' na pakete.