BraMira / Mirjam-Spela

Projekt pri predmetu OPB 2015/2016
0 stars 4 forks source link

Shiny #6

Closed spelapovrzenic closed 8 years ago

spelapovrzenic commented 8 years ago

Živjo! Evo sedaj se bova lotili shinyja, pa imava par vprašanj kako sploh začeti. V dokumentu server in ui sva že "skopirali" idejo prve aplikacije. Sedaj pa naju zanima kako točno to delaš, kaj točno notri vpisuješ . Naprimer za prvo sva si izbrale število mrtvih in bi iz tabele attack pogledali napade, in potem bi imeli na npr levi strani tak "slider", kjer bi naprimer označili npr pokaži napade kjer je bilo več kot 10 mrtvih, potem napade več kot 20, 100 mrtvih, itd .... izpisovalo pa bi potem podatke o napadih Bi bile hvaležne če bi nama nekako razložili te inpute in outpute torej kaj točno moramo notri gledati. Če preveč sprašujeva, če imate čas jutri, se lahko oglasim pri vas pa mi poveste v živo, tudi ni problema.

Hvala in lp

spelapovrzenic commented 8 years ago

Ter kako potem vidimo te aplikacije, namreč za ravno ta primer sem že naredila primer, a vedno ko želim pognati aplikacijo, potem mi javlja: Warning in file(filename, "r", encoding = encoding) : cannot open file '4.Baza/auth.R': No such file or directory Warning: Error in file: cannot open the connection Stack trace (innermost first): 39: file 38: source 1: runApp Error in file(filename, "r", encoding = encoding) : cannot open the connection

BraMira commented 8 years ago

Prva aplikcija nama "skoraj" dela, vendar nama se pokaže le ta slider in nič drugega.

jaanos commented 8 years ago

Žal je tako, da RStudio pri poganjanju Shiny aplikacij ob kliku na Run App za delovni imenik vzame imenik, kjer se nahajata server.R in ui.R - to se ne sklada s tem, da je delovni imenik privzeto glavni imenik projekta. Najlažje bo, če pred klicanjem ukaza source preverita, ali se v trenutnem imeniku najaha server.R:

if ("server.R" %in% dir()) {
  setwd("..")
}
spelapovrzenic commented 8 years ago

Aha super, sedaj deluje! Najlepša hvala! Sedaj me zanima, torej začela sem delati aplikacijo, ki bo vrnila tabelo z splošnimi lastnostmi napadov (da vrže podatke iz tabele attack) vendar nekako bi vsaki državi ki je v tej tabeli dodelila še kontinent in religijo (to sva že dodali v bazi kot relacijo). In namen imam da bi v sliderPanelu (nekaj sem že notri napisala), da bi si najprej lahko izbral:

ali sva si zastavili preveč? Drugače pa bi res prosila za pomoč, da bova potem tudi za naprej vedeli kako podobne stvari delati. Hvala že v naprej!

jaanos commented 8 years ago

Plan izgleda v redu. Tabele povezujeta s funkcijami, kot so inner_join, left_join itd.

Še to bi opozoril: če hočeta imeti v vhodih podatke iz baze, potem bo treba te elemente ustvariti v server.R in jih potem prikazati v ui.R s funkcijo uiOutput. Tako lahko v server.R dasta npr.

  output$kontinent <- renderUI({
      celine <- data.frame(tbl.continent)
      selectInput("kontinent", "Izberi celino:",
                  choices = c("All" = 0, setNames(celine$continent_id,
                                                  celine$name)))
    })

Potem namesto selectInput v ui.R postavita ustrezni element:

uiOutput("kontinent")

Tako bo v server.R spremenljivka input$kontinent vsebovala 0 ob izbiri All, oziroma ustrezni ID ob izbiri kontinenta.

Pri takih dinamičnih elementih je problem le ta, da se naložijo kasneje, zato input$kontinent na začetku ne bo definiran, kar lahko privede do napake ob nalaganju (kasneje navadno te napake izginejo). Teh napak se lahko znebita tako, da z npr. is.null preverite, ali je spremenljivka definirana, in naredita ustrezno stvar, če ni (npr. postavita privzeto vrednost - pazita na to, da so komponente objekta input samo za branje, tako da bo treba uvesti novo spremenljivko).

spelapovrzenic commented 8 years ago

hvala. Ta issue bova zaprli in odprli sva dva nova za aplikacije, da bo bolj pregledno kaj sprašujeva. lp

jaanos commented 8 years ago

Se oproščam za neodzivnost.

Bom kar tukaj dal en splošen komentar. Če želita imeti več Shiny aplikacij, vsako postavite v svojo mapo s svojima datotekama server.R in ui.R. Seveda pa imata lahko tudi eno samo aplikacijo z več ločenimi zavihki.

Bom posebej odgovoril še na #7 in #8.