Installer Shiny Package i RStudio
Før vi går mot å lage en interaktiv nettapplikasjon i RStudio, bør vi ha 'Shiny'-pakken allerede installert i den. For dette må du utvide 'Verktøy'-menyen til RStudio etterfulgt av alternativet 'Installer pakker'. I det åpne vinduet må du nevne pakken du vil installere, det vil si 'skinnende', og trykk på 'Installer' -knappen. RStudio vil installere den skinnende pakken i RStudio-konsollen.
Kom i gang med Shiny in R
For å komme i gang med Shiny in R, må du opprette en ny R-fil ved å bruke 'Fil'-menyen som ligger på første plass i RStudio. Utvid den og bruk alternativet 'Ny fil' etterfulgt av alternativet 'R Script'. Den 'navnløse' skriptfilen vil bli åpnet i RStudio. Gi den nytt navn til en 'R'-fil på ønsket plassering.
Last nå de nødvendige pakkene som kreves for å bygge en interaktiv applikasjon i R, dvs. bruk 'bibliotek'-funksjonen til R. 'if'-setningene brukes til å installere pakkene som ikke var installert tidligere. Shiny-pakken brukes til å bygge et interaktivt grensesnitt for webapplikasjoner sammen med noen grafiske visualiseringer. 'dplyr'-pakken brukes hovedsakelig for å lette datamanipulasjonen i R ved å bruke noen nyttige funksjoner.
Til slutt er 'ggplot2'-pakken lastet inn som en flott kilde til datavisualisering ved å lage tilpassede og kraftige grafer.
hvis ( ! requireNamespace ( 'skinnende' , stille = EKTE ) ) {
installere. pakker ( 'skinnende' )
}
hvis ( ! requireNamespace ( 'dplyr' , stille = EKTE ) ) {
installere. pakker ( 'dplyr' )
}
hvis ( ! requireNamespace ( 'ggplot2' , stille = EKTE ) ) {
installere. pakker ( 'ggplot2' )
}
bibliotek ( skinnende )
bibliotek ( dplyr )
bibliotek ( ggplot2 )
Bygg et interaktivt eksamenskaraktersystem
I denne opplæringen vil vi lage et 'eksamenskaraktersystem' for at elevene skal få sine oppnådde karakterer via karakterene som er oppnådd av 100. Skriptet som følger med er 'ui'-komponenten i en skinnende app som spesifiserer designet og utseendet til programmet. Programmet genererer en fluidPage, et tilpasningsdyktig design som kan skaleres for å justere for nettleservinduet.
Et 'titlePanel' og en 'sidebarLayout' er avkom av 'fluidPage'. 'Eksamenskaraktersystem'-tittelen til programmet er alt som vises i 'tittelpanelet'. Et 'sidebarPanel' og et 'mainPanel' er de to delene som 'sidebarLayout' bruker til å dele applikasjonen inn i. Et par innganger er inkludert i 'sidebarPanel': en 'textAreaInput' kalt 'score' pluss en 'actionButton' kalt 'calculate'.
En poengsum per linje kan legges inn for hver elev ved å bruke 'textAreaInput'. Karaktervurderingen kan startes ved bruk av 'actionButton'. Et par utganger er til stede i 'hovedpanelet': en 'tabellOutput' kalt 'Result' pluss en 'plotOutput' kalt 'ResultGraph'. Både 'tableOutput' og 'plotOutput' vil presentere beregningens funn i form av en graf.
ui <- fluidPage (tittelpanel ( 'Eksamenskaraktersystem' ) ,
sidebarLayout (
sidepanelpanel (
textAreaInput ( 'score' , 'Skriv inn poeng for studenter (én per linje):' , '' ) ,
handlingsknapp ( 'regne ut' , 'La oss beregne karakterer' )
) ,
hovedpanel (
tabellOutput ( 'Resultat' ) ,
plotOutput ( 'ResultGraph' )
) ) )
Servermetoden etablerer applikasjonens serversidelogikk. Karakterene for studenter lagres i utgangspunktet i en reaktiv variabel kalt 'data'. For dette overvåkes «beregn»-knappen av «observeEvent»-metoden til R. Etter at knappen er utløst, konverterer koden først verdiene som er angitt i tekstfeltet til numeriske verdier.
Hver poengsum etterfølges av et linjeskift ved å bruke '\n' for å legge inn en ny poengsum på neste linje. Metoden plasserer den poengsummen den finner i 'data'-variabelen. Hvis en bruker ikke har lagt inn noen poengsum, viser metoden en melding med en feil.
server <- funksjon ( input, output ) {data <- reactiveVal ( NULL )
observereEvent ( input$calculate, {
score <- som. numerisk ( avliste ( strsplit ( input$score, ' \n ' ) ) )
hvis ( lengde ( score ) > 0 ) {
data ( score )
} ellers {
data ( NULL )
showModal ( modalDialog (
tittel = 'Feil' ,
'Feil: Vennligst legg til verdi!' ,
easyClose = EKTE
) )
}
} )
To utganger, 'output$Result' pluss 'output$ResultGraph', er spesifisert for å vise elevkarakterer og oppnådde karakterer. Den dynamiske metoden renderTable() produserer en datatabell over studentens testkarakterer og karakterer som er merket som 'output$Result'. renderPlot()-metoden, som også er reaktiv, genererer et søylediagram for studentkarakterer og lagrer det i 'output$ResultGraph'-utgangen på samme måte.
De vil derfor bli vurdert hver gang inndataene oppdateres. If (!is.null(data()))-uttrykket bestemmer om dataene som mottas er null eller ikke. Skriptet til 'if'-setningen utføres hvis det ikke er tomt. En vektor av poengsum for studenter utgjør input 'data'. Hver student får en karakter basert på deres poengsum ved hjelp av case_when()-metoden. En dataramme som inneholder elevkarakterene og testkarakterene er opprettet ved hjelp av data.frame()-metoden. Følgende kolonner legges til i datarammen: 'Student', 'Poengsum' og 'Karakter'. Karakterfordelingen er kompilert i en tabell kalt 'GradeCount' ved å bruke table()-metoden.
output$Resultat <- gjengi tabell ( {hvis ( ! er. null ( data ( ) ) ) {
karakterer <- case_when (
data ( ) > 80 ~ 'EN' ,
data ( ) > 60 ~ 'B' ,
data ( ) > 40 ~ 'C' ,
data ( ) > 30 ~ 'D' ,
EKTE ~ 'F'
)
data. ramme ( Student = 1 : lengde ( data ( ) ) , Score = data ( ) , Karakter = karakterer )
}
} )
output$ResultGraph <- renderPlot ( {
hvis ( ! er. null ( data ( ) ) ) {
karakterer <- case_when (
data ( ) > 80 ~ 'EN' ,
data ( ) > 60 ~ 'B' ,
data ( ) > 40 ~ 'C' ,
data ( ) > 30 ~ 'D' ,
EKTE ~ 'F'
)
Karaktertelling <- bord ( karakterer )
Stolpediagrammet lages ved å bruke 'ggplot2'-biblioteket. Count (totalt antall elever som oppnådde hver karakter) og kolonnen Karakter opprettes i en DataFrame. Et søylediagram med 'Grade'-data på 'x-aksen' og 'Count'-data på 'y-aksen' produseres ved å bruke geom_bar()-metoden. Alternativet stat = 'identity' instruerer ggplot2 til å bruke de faktiske dataene uten noen form for transformasjon. En tittel, en x-akseetikett og en y-akseetikett legges til via 'labs'-metoden. Linjens farger tildeles ved hjelp av scale_fill_manual()-metoden. Unødvendige rutenettlinjer og overleggskomponenter fjernes ved å bruke theme_minimal()-metoden. shinyApp(ui, server)-metoden bygger en app.
ggplot ( data = data. ramme ( Karakter = navn ( Karaktertelling ) , Telle = som. numerisk ( Karaktertelling ) ) ,aes ( x = Karakter, og = Tell, fyll = Karakter ) ) +
geom_bar ( stat = 'identitet' ) +
laboratorier ( tittel = 'Karakterfordeling' ,
x = 'Karakter' ,
og = 'Telle' ) +
scale_fill_manual ( verdier = c ( 'EN' = 'grønn' , 'B' = 'lilla' , 'C' = 'rosa' ,
'D' = 'oransje' , 'F' = 'rød' ) ) +
theme_minimal ( )
}
} )
}
shinyApp ( ui, server )
Da vi kjørte denne koden, fikk vi et interaktivt grensesnitt der vi la til noen merker og klikket på 'La oss beregne karakterer'-knappen.
Tabellen som inneholder elevpoeng og karakterer vises, etterfulgt av søylediagrammet for karakterfordelingen i forskjellige farger.
Konklusjon
Denne veiledningen forklarer viktigheten av bruken av Shiny-pakken på R-språket via RStudio. For å supplere forklaringen vår, konstruerte vi en interaktiv nettapplikasjon for elevenes karaktersystem i R-koden ved å bruke 'Shiny'-pakken.