Documente Academic
Documente Profesional
Documente Cultură
R Shiny=R+interactivity+web
Sursa tipică este un input a unui user prin intermediul interfetei browser. Ex:
Punct final reactiv –ceva ce apare utilizatorului în browser ca rezultat al sursei reactive va apăra
un grafic sau un tabel de valori
Într-o aplicație simplă Shiny,
+sursele reactive sunt accesibile prin obiectul de intrare,
+punctelede final reactive sunt obiectele de tip output.
Se vb de surse și puncte finale care sunt de fapt intrari şi ieşiri
EXŞ structură simplă, cu o singură sursă și un punct final, este utilizată de exemplul
01_hello.
Ex Hello
Obiectul output$distPlot este un obiectiv final reactiv și utilizează intrarea sursă reactivă
Ori de câte ore input$obs se schimbă output$distPlot este anunţat ca trebuie să se reexecute.
Intr-un program cu o interfaţă user interactivă , acest lucru implică setarea unui handler de
eveniment + scrierea unui cod sursă ce citeste valori şi transferă date.
=>Shiny face toate acestea si impune doar sa se scrie R cod
https://gallery.shinyapps.io/01_hello/.
Sursa reactivă poate fi conectată la mai
multe puncte finale și invers.
Într-o aplicație Shiny, nu este nevoie
să se descrie explicit fiecare dintre
aceste relații =>
se scrie cod R pentru fiecare schimbare
a componentei de intrare;( Shiny
manipulează automat aceste detalii.
In ex: de câte ori se schimba valoarea lui
input$nBreaks expresia care
generează graficul va fi re-executată
automat.
Ori de câte ori se modifică valoarea
variabilei input$individualObs graficul şi
tabelul vor fi re-executate automat.
Majoritatea funcţiilor de final +rezultatele
lor sunt trimise automat spre browser.
Reactive conductors(Conductori reactivi)
conductori reactivi sunt componente ce apar intre puncte de final şi surse.
într-un grafic al structurii reactive.
I.Un conductor poate fi
1. dependent și are dependenți.
2. atât părinte cât și copil
II.Sursele pot fi numai părinți (pot avea dependenți)
III. obiectivele finale pot fi doar copii (pot fi dependenți) în graficul reactiv.
Conductorii reactivi pot fi utili pentru încapsularea unor operații lente sau computerizate.
Recapitulare
Sursele reactive pot semnala obiecte în flux pe care trebuie să le re-execute.
Conductorii reactivi sunt plasați undeva între surse și punct final de pe graficul reactiv.
Ele sunt utilizate în mod obișnuit pentru încapsularea operațiilor lente.
Puncte finale reactive pot fi re-executate de mediul reactiv și pot solicita executarea
obiectelor din amonte.
Nodul copil este dependent sau are o dependență de nodul părinte.
Implementări ale surselor, conductoriși punctelor finale: valori, expresii și observatori
Valorile reactive reprezintă o implementare a surselor reactive;
Expresiile reactive sunt o implementare a conductorilor reactivi. Aceștia pot accesa
valori reactive sau alte expresii reactive și returnează o valoare.
Observatorii sunt o implementare a punctelor finale reactive. Aceștia pot accesa surse
reactive și expresii reactive și nu revin la valoare;
Reactive values
conțin valori care pot fi citite de alte obiecte
reactive.
Obiectul de intrare (input) este un obiect
ReactiveValues, care arată ca o listă și conține
mai multe valori individuale reactive.
Valorile din intrare (input) sunt setate prin
introducerea de la browserul web.
Reactive expressions
-au efecte secundare - de obicei, aceasta implică trimiterea de date către browserul
web.
-Obiectul de ieșire arată ca o listă și poate conține mai mulți observatori individuali.
renderText () -fiecare returnează o funcție care returnează o valoare. Acestea sunt de
obicei folosite astfel:
toate aceste concepte se impun să fie aplicate împreună pentru a dezvolta software-
ul de calitate într-un context modern.
Responsive(sensibil)
O aplicație responsive- este rapidă în scopul de a reacționa la toți utilizatorii ei pentru a asigura
utilizatorilor o experiență pozitivă în mod constant.
Agerimea și experiența pozitivă de utilizare pozitivă, în diferite condiții, cum ar fi defectarea
eșecului unui sistem sau a unui trafic intens dus pănă la extrema superioară depinde de cele
două trăsături ale unei aplicații reactive: capacitatea de resilience și scalabilitate.
-Aceste trăsături + inputuri dinamice+ limbaj interpretat de exemplu Ruby => o aplicație care are
aceste caracteristici ajunge rapid limitele superioare de performanță și scalabilitate.
-În cazul în care un limbaj prezintă aceste caracteristici se numește limbaj de scripting.
Limbaj de scripting este utilizat pentru a conecta componente de sistem disparate.
Deci, scalarea se referă la determinare unei modalități de utilizarea eficientă a resurselor deja
disponibile. Elasticity pp adăugarea la cerere, de noi resurse sistemului generate din
nevoile de schimbare de sistem. Capacitatea de a scala la cerere este obiectivul final de
scalabilitate a unei aplicații reactive.
Message-driven
-stă la baza aplicațiilor reactive.
-o caracteristica reactivă a unei aplicații poate fi determinate de un event-driven, actor-based,
sau de un mixt a celor 2
Detalii: Benjamin Erb’s Diploma Thesis, Concurrent Programming for Scalable Web
Architectures, http://berb.github.io/diploma-thesis/original/
Concluzie
clic buton RunApp=> lansare în execuție a aplicației. Nu se afișează nimic pentru că este o aplicație
goală, în consola apare un text tipărit sub formă de ascultare de pe http://127.0.0.1:5274 și-că
nu se pot executa alte comenzi in consola. datorită faptului că R este ocupat-sesiune R
pornește în prezent o aplicație Shiny și asculta pentru interacțiunea cu utilizatorul.Opri
reaplicație -activare tastă Escape.
Creare template app utilizând RStudio
-Selectare menu File > New Project > New Directory > Shiny Web
Application.
-Efect: RStudio va crea un nou director și initializează o app Shiny în el
-App Shiny rezultată - nu va avea un fișier app.R
-în schimb va avea două fișiere: ui.R și server.R.
-Adăugarea unui text formatat, cu elemente HTML-cu ajutorul funcțiilor Shiny aplicate tagurilor
HTML cum ar fi de exemplu:
-funcția h1() pentru un antet de nivel superior (în HTML avem <h1> ),
- funcția h2 () pentru un antet secundar (în HTML-<h2>),
-funcția strong () pentru a face textul cu caractere aldine (în HTML <strong>),
- funcția em () pentru a face textul italic (în HTML (<em> ), si multe altele.
-Funcție br() pt a forța trecrea la o noua linie
-img () pentru o imagine,
-a () pentru un hyperlink.
Obs: orice argument precizat într-o funcție HTML devine un atribut al elementului
HTML definit de funcție,iar orice argument anonim va fi un copil al elementului.
De exemplu, creare div cu un text albastru :
div ("acest lucru este albastru", style = " color : albastru;").
Adăugare un titlu
-adăugarea unui titlu la app se poate face cu funcția H1() -preferă utilizarea funcției
Shiny titlePanel ().
Funcția titlePanel () - adaugă un mare text vizibil ca titlu în partea de sus a paginii,
- stabilește, "oficial", titlul paginii web=> mai exact numele paginii
în browser-ul, este titlu adică textul trecut titlePanel ca parametru.
fluidPage(
titlePanel(“Prima aplicație Shiny"),
...
)
Adăugarea unui layout
sidebarLayout () -adăugă o structură simplă.
- structura oferă un aspect simplu pe două coloane, o colană laterală
mai mică și un panou principal mai mare.
Aplicația Shiny va fi contruită astfel încât toate intrările pe care utilizatorul le poate
manipula va fi în bara laterală stângă, iar rezultatele vor fi afișate în panoul principal de
pe partea dreaptă.
Cod sursă după titlePanel ()
sidebarLayout(
sidebarPanel(“Inputs se vor plasa aici"),
mainPanel(“Rezultatele vor fi plasate aici") )
toate argumentele din interiorul fluidPage () trebuie să fie separate prin virgulă.
library(shiny)
ui <- fluidPage(
titlePanel(“Prima aplicație Shiny"),
Fișierul UI.r sidebarLayout( sidebarPanel(“Inputurile vor fi afișate aici"),
mainPanel(“Rezultatele vor fi afișate aici") ) )
library(shiny)
Fișierul Server.r # Define server logic required
shinyServer(function(input, output) {
})
UI.r modificare pt a obține următorul
layout
library(shiny)
ui <- fluidPage(
titlePanel(title="Prima aplicație Shiny"),
sidebarLayout( position="right",
sidebarPanel(h3("Inputurile vor fi afișate aici"),h4("widget4"),h5("widget5")),
mainPanel(h4("Rezultatele vor fi afișate aici"),h5("acesta este output")) ))
Outputs
Plots, tables, text – tot ce se poate crea cu R şi utilizatorii vad
Se initializează un spațiu gol pentru obiect până când este
creat
Outputs
Construire output
1. Salvare obiect in output$
Construire output
2. Construire obiecte cu render
render()-crează output reactiv pt a se
afişa in UI
3. Construire output
Access la valori input cu input$
Reactiv
input$num este o valoare reactivă
Toate inputurile sunt automat reactive, daca foloseşti fiecare input in interiorul lui render*
function, output-ul va fi refăcut la fiecare modificare a inputului
Instalare
Install R--https://cran.r-project.org/bin/windows/base/old/3.1.2/
Install R-Studio-https://cran.r-project.org/bin/windows/base/old/3.1.2/
Install R-Packages (If needed)
Detalii
http://rprogramming.net/download-and-install-rstudio/
http://web.cs.ucla.edu/~gulzar/rstudio/
O sursă reactivă poate fi conectat la mai multe puncte finale, și vice-versa. Aici este o
aplicație Shiny cu un grad ridicat de complexitate:
Dezvoltarea aplicațiilor web se poate realiza în diferite moduri
http://www.shinyapps.io
Ui: funcții R imbricate care montează o interfață de utilizator HTML pentru aplicația
• se salvează fiecare aplicație ca un director care conține un fișier app.R (sau un fișier ui.R și un
fișier server.R), la care se pot adăuga fișiere opționale suplimentare
Organizarea funcțiilor panel și a elementelor într-un layout printr-o funcție de layout de forma
Filele tabPanels situate în partea de sus a ecranului în fiecare dintre ele oferă posibilitatea de a
naviga printre ele.