Kā izveidot interaktīvas tīmekļa lietotnes, izmantojot Shiny in R

Ka Izveidot Interaktivas Timekla Lietotnes Izmantojot Shiny In R



Pateicoties R Shiny ietvaram, kas ir RStudio komplekts, dinamisku tīmekļa lietotņu izveide ar R ir salīdzinoši vienkārša. Shiny priekšrocība ir tāda, ka tas ļauj ievietot R kodu tīmeklī, padarot to pieejamāku plašākam lietotāju lokam. Izmantojot R Shiny, varat izveidot ļoti jaudīgus datu pārskatus un vizuālos materiālus, kas ļauj lietotājam analizēt datu kopu. Kopā ar Shiny komponentiem HTML elementus var izmantot, lai izstrādātu programmas saturu. Šodienas rakstā ir aprakstīts interaktīvas tīmekļa lietojumprogrammas izveides process, izmantojot R's Shiny pakotni. Lai to izdarītu, pārliecinieties, vai “RStudio” jau ir instalēts.

Instalējiet Shiny Package programmā RStudio

Pirms pāriet uz interaktīvas tīmekļa lietojumprogrammas izveidi RStudio ietvaros, mums tajā jau jābūt instalētai pakotnei 'Shiny'. Lai to izdarītu, jums ir jāpaplašina RStudio izvēlne “Rīki”, kam seko opcija “Instalēt pakotnes”. Atvērtajā logā jums ir jānorāda pakotne, kuru vēlaties instalēt, t.i., 'spīdīgs', un pieskarieties pogai 'Instalēt'. RStudio instalēs spīdīgo pakotni RStudio konsolē.







Sāciet darbu ar Shiny in R

Lai sāktu darbu ar Shiny in R, jums ir jāizveido jauns R fails, izmantojot izvēlni “Fails”, kas atrodas RStudio pirmajā vietā. Paplašiniet to un izmantojiet opciju 'Jauns fails', kam seko 'R skripts'. Skripta fails “bez nosaukuma” tiks atvērts programmā RStudio. Pārdēvējiet to par “R” failu vēlamajā vietā.



Tagad ielādējiet nepieciešamās pakotnes, kas nepieciešamas, lai izveidotu interaktīvu lietojumprogrammu programmā R, t.i., izmantojot R funkciju “bibliotēka”. Paziņojumus “if” izmanto, lai instalētu pakotnes, kas iepriekš nebija instalētas. Shiny pakotne tiek izmantota, lai izveidotu interaktīvu saskarni tīmekļa lietojumprogrammām kopā ar dažām grafiskām vizualizācijām. Pakete “dplyr” galvenokārt tiek izmantota, lai atvieglotu datu manipulācijas programmā R, izmantojot dažas noderīgas funkcijas.



Visbeidzot, pakotne “ggplot2” tiek ielādēta kā lielisks datu vizualizācijas avots, veidojot pielāgotus un jaudīgus grafikus.





ja ( ! prasītNamespace ( 'spīdīgs' , klusi = PATIESA ) ) {

uzstādīt. iepakojumiem ( 'spīdīgs' )

}

ja ( ! prasītNamespace ( 'dplyr' , klusi = PATIESA ) ) {

uzstādīt. iepakojumiem ( 'dplyr' )

}

ja ( ! prasītNamespace ( 'ggplot2' , klusi = PATIESA ) ) {

uzstādīt. iepakojumiem ( 'ggplot2' )

}

bibliotēka ( spīdīgs )

bibliotēka ( dplyr )

bibliotēka ( ggplot2 )

Izveidojiet interaktīvu eksāmenu vērtēšanas sistēmu

Šajā apmācībā mēs izveidosim “Eksāmenu vērtēšanas sistēmu”, lai studenti varētu iegūt savus iegūtos vērtējumus, izmantojot atzīmes, kas iegūtas no 100. Nodrošinātais skripts ir Shiny lietotnes “ui” komponents, kas nosaka programmas dizainu un izskatu. programma. Programma ģenerē fluidPage — pielāgojamu dizainu, ko var mērogot, lai pielāgotos pārlūkprogrammas logam.

“TitlePanel” un “sidebarLayout” ir “fluidPage” pēcnācēji. Programmas nosaukums “Exam Grading System” ir viss, kas tiek parādīts “titlePanel”. “SidebarPanel” un “mainPanel” ir divas sadaļas, kuras “sidebarLayout” izmanto, lai sadalītu lietojumprogrammu. “Sānjoslas panelī” ir iekļauts pāris ievades: “textAreaInput” ar nosaukumu “score” un “actionButton” ar nosaukumu “aprēķināt”.



Katrā rindiņā var ievadīt vienu punktu katram skolēnam, izmantojot “textAreaInput”. Vērtējumu vērtēšanu var sākt, izmantojot “actionButton”. “Galvenajā panelī” ir izvadu pāris: “tableOutput” ar nosaukumu “Result” un “plotOutput” ar nosaukumu “ResultGraph”. Gan “tableOutput”, gan “plotOutput” attēlos aprēķina rezultātus diagrammas veidā.

ui <- fluidLapa (

titlePanel ( 'Eksāmenu vērtēšanas sistēma' ) ,
sānjoslas izkārtojums (
sānjoslaPanelis (
textAreaInput ( 'rezultāts' , 'Ievadiet punktus studentiem (vienu katrā rindā):' , '' ) ,
Darbības poga ( 'aprēķināt' , 'Aprēķināsim atzīmes' )
) ,
galvenais panelis (
tabulaIzvade ( 'Rezultāts' ) ,
plotOutput ( 'Rezultātu diagramma' )
) ) )

Servera metode nosaka lietojumprogrammas servera puses loģiku. Studentu atzīmes sākotnēji tiek saglabātas reaktīvā mainīgajā ar nosaukumu “data”. Šim nolūkam poga “Aprēķināt” tiek uzraudzīta, izmantojot R metodi “observeEvent”. Pēc pogas nospiešanas kods sākotnēji pārvērš teksta lauka ievadē ievadītās vērtības par skaitliskām vērtībām.

Katram rezultātam seko rindiņas pārtraukums, izmantojot taustiņu “\n”, lai nākamajā rindā ievadītu jaunu rezultātu. Metode visus atrastos punktus ievieto mainīgajā “dati”. Ja lietotājs nav ievadījis rezultātu, metode parāda ziņojumu ar kļūdu.

serveris <- funkciju ( ieejas izejas ) {

datus <- reactiveVal ( NULL )

novērot notikumu ( ievade$aprēķināt, {

rezultāts <- kā. ciparu ( neiekļauts sarakstā ( strsplit ( input$score, ' \n ' ) ) )

ja ( garums ( rezultāts ) > 0 ) {

datus ( rezultāts )

} cits {

datus ( NULL )

showModal ( modālais dialogs (

virsraksts = 'Kļūda' ,

'Kļūda: lūdzu, pievienojiet vērtību!' ,

viegliAizvērt = PATIESA

) )

}

} )

Ir norādīti divi izvadi, “output$Result” plus “output$ResultGraph”, lai parādītu skolēnu atzīmes un sasniegtos vērtējumus. Dinamiskā metode renderTable() veido datu tabulu par studenta pārbaudes atzīmēm un atzīmēm, kas ir apzīmēta kā “output$Result”. Metode renderPlot(), kas tāpat ir reaktīva, ģenerē studentu atzīmes joslu diagrammu un līdzīgi saglabā to izvadē “output$ResultGraph”.

Tāpēc tie tiks pārskatīti katru reizi, kad tiek atjaunināti ievades dati. Izteiksme if (!is.null(data())) nosaka, vai saņemtie dati ir nulle. Paziņojuma “if” skripts tiek izpildīts, ja tas nav tukšs. Ievades “datus” veido studentu rezultātu vektors. Katram skolēnam tiek piešķirts vērtējums, pamatojoties uz viņa punktu skaitu, izmantojot metodi case_when(). Izmantojot metodi data.frame(), tiek izveidots datu rāmis, kas satur skolēnu atzīmes un pārbaudes atzīmes. Datu rāmim tiek pievienotas šādas kolonnas: “Students”, “Score” un “Grede”. Atzīmju sadalījums tiek apkopots tabulā ar nosaukumu “GradeCount”, izmantojot metodi table().

izvads$Rezultāts <- renderTable ( {

ja ( ! ir. null ( datus ( ) ) ) {

pakāpes <- case_kad (

datus ( ) > 80 ~ 'A' ,

datus ( ) > 60 ~ 'B' ,

datus ( ) > 40 ~ 'C' ,

datus ( ) > 30 ~ 'D' ,

PATIESA ~ 'F'

)

datus. rāmis ( Students = 1 : garums ( datus ( ) ) , Rezultāts = datus ( ) , Novērtējums = pakāpes )

}

} )

output$ResultGraph <- renderPlot ( {

ja ( ! ir. null ( datus ( ) ) ) {

pakāpes <- case_kad (

datus ( ) > 80 ~ 'A' ,

datus ( ) > 60 ~ 'B' ,

datus ( ) > 40 ~ 'C' ,

datus ( ) > 30 ~ 'D' ,

PATIESA ~ 'F'

)

GradeCount <- tabula ( pakāpes )

Joslu diagramma tiek izveidota, izmantojot bibliotēku “ggplot2”. Skaits (kopējais skolēnu skaits, kuri ieguvuši katru atzīmi) un kolonna Atzīme tiek izveidota DataFrame. Joslu diagramma ar “Grade” datiem uz “x ass” un “Count” datiem uz “y ass” tiek izveidota, izmantojot geom_bar() metodi. Opcija stat = “identitāte” uzdod ggplot2 izmantot faktiskos datus bez jebkāda veida pārveidošanas. Virsraksts, x ass etiķete un y ass etiķete tiek pievienoti, izmantojot “laboratorijas” metodi. Joslas krāsas tiek piešķirtas, izmantojot scale_fill_manual() metodi. Nevajadzīgās režģa līnijas un pārklājuma komponenti tiek noņemti, izmantojot metodi theme_minimal(). Metode shinyApp (ui, serveris) veido lietotni.

ggplot ( datus = datus. rāmis ( Novērtējums = vārdus ( GradeCount ) , Skaits = kā. ciparu ( GradeCount ) ) ,
aes ( x = Atzīme un = Skaitīt, aizpildīt = Novērtējums ) ) +
geom_bar ( stat = 'identitāte' ) +
laboratorijas ( virsraksts = 'Pakāpju sadalījums' ,
x = 'Atzīme' ,
un = 'Count' ) +
scale_fill_manual ( vērtības = c ( 'A' = 'zaļš' , 'B' = 'violets' , 'C' = 'rozā' ,
'D' = 'apelsīns' , 'F' = 'sarkans' ) ) +
theme_minimal ( )
}
} )
}
shinyApp ( ui, serveris )

Palaižot šo kodu, mēs ieguvām interaktīvu saskarni, kurā pievienojām dažas atzīmes un noklikšķinājām uz pogas “Aprēķināsim atzīmes”.

Tiek parādīta tabula, kurā ir ietverti skolēnu rezultāti un atzīmes, kam seko atzīmju sadalījuma joslu diagramma dažādās krāsās.

Secinājums

Šajā rokasgrāmatā ir izskaidrota Shiny pakotnes lietošanas nozīme R valodā, izmantojot RStudio. Lai papildinātu mūsu skaidrojumu, mēs izveidojām interaktīvu tīmekļa lietojumprogrammu studentu vērtēšanas sistēmai R kodā, izmantojot paketi 'Spīdīgs'.