2017-10-16 5 views
0

Je connais certains R et maintenant je voudrais créer une première application simple. Voici le dataframe je:Shiny: créer et comprendre une application simple

x

  Var1 Freq MotherAlive Deaths 
1 -0.3574849239 128   1  61 
2 -0.3426329835 125   2 111 
3 -0.2279137719 110   2  96 
4 -0.2038604979 81   1  63 
5 -0.2004248235 94   2 119 
6 -0.1866284306 153   2 128 
7 -0.1762490299 124   1 109 
8 -0.1736353449 87   2  91 
9 -0.1624588718 51   2 134 
10 -0.1503921713 88   1 105 
11 -0.1501143228 151   1 140 
12 -0.1492320254 128   2 126 
13 -0.1484292603 97   2  78 
14 -0.1431025682 116   2 105 
15 -0.1339971398 52   1 133 
16 -0.1336509151 43   1 106 
17 -0.1329288171 98   1 122 
18 -0.1174806726 104   2 119 
19 -0.1170459477 111   1 139 
20 -0.1063311927 140   2 106 
21 -0.1063101037 118   1 138 
22 -0.1052133391 64   2 125 
23 -0.1009333742 78   1  85 
24 -0.0932270424 112   2 140 
25 -0.0765785108 59   1  96 
26 -0.0748168224 72   1 110 
27 -0.0725537833 70   2  91 
28 -0.0702932290 111   2  63 
29 -0.0689926554 51   2  77 
30 -0.0607975570 111   1 125 
31 -0.0583357003 138   2  68 
32 -0.0535012169 53   1  75 
33 -0.0505603465 96   2  67 
34 -0.0392230996 105   1  67 
35 -0.0373462508 99   1  65 
36 -0.0355835995 75   2 128 
37 -0.0316295745 55   1  92 
38 -0.0313050685 115   1 120 
39 -0.0241317373 62   2 124 
40 -0.0214325431 89   2 134 
41 -0.0210084740 79   2 104 
42 -0.0179134498 53   2 104 
43 -0.0117510238 129   1 100 
44 -0.0086331499 75   1  83 
45 0.0008978007 57   2  79 
46 0.0076018541 60   1 127 
47 0.0124470800 45   2  96 
48 0.0192847770 68   2 110 
49 0.0195626326 84   1  76 
50 0.0277658621 93   2  78 
51 0.0324838136 66   2  93 
52 0.0427433106 109   2 110 
53 0.0542162036 61   2  73 
54 0.0617228677 104   1 136 
55 0.0732288400 113   2  73 
56 0.0805244157 52   1  61 
57 0.0933868304 141   1  68 
58 0.0962572600 47   1 111 
59 0.0992007270 98   1  74 
60 0.1126662494 137   1  67 
61 0.1175718095 91   2  65 
62 0.1193833698 76   2 110 
63 0.1321158054 56   1 122 
64 0.1346171097 142   1 136 
65 0.1461559695 80   2  60 
66 0.1551994333 160   1  76 
67 0.1645405730 147   1  67 
68 0.1672903379 124   1  71 
69 0.1680942594 108   2  87 
70 0.1805845470 67   2  63 
71 0.1899103023 85   1  78 
72 0.1988461353 150   2  97 
73 0.2034001399 64   2 129 
74 0.2182855107 90   1  94 
75 0.2200093156 101   1 125 
76 0.3053271995 104   2 112 
77 0.3337327069 72   2 124 
78 0.3668031727 100   1  75 
79 0.4302071402 151   2  69 

ce que je veux est assez simple, je suppose: Je veux deux curseurs, l'écart de Rye_Prices cycle et MotherAlive (ils sont produits et du travail jusqu'à présent) et je veux qu'ils affichent le nombre de décès, de naissances ou les deux en fonction de leurs valeurs. Mais il y a apparemment une petite pensée conceptuelle que je ne comprends pas vraiment. J'ai écrit ce qui suit:

library(shiny) 

if (interactive()) { 
    options(device.ask.default = FALSE) 

    ui <- fluidPage( 
    titlePanel("Events"), 
    sidebarLayout(  
     sidebarPanel(
     sliderInput("Var1", "Deviation from Rye_Prices-Cycle", min = -0.5, max = 0.5, value = 0), 
     sliderInput("MotherAlive", "MotherAlive", min = 1, max = 2, value = 1) 
    ), 
     mainPanel(
     plotOutput("EventPlot") 
    ) 
    ) 
) 

    server <- function(input, output) { 
    output$EventPlot <- renderPlot({ 
     plot(x[,input$Var1], 
       main=input$Var1, 
       ylab="Freq", 
       xlab="Deaths") 
    }) 
    } 

    shinyApp(ui = ui, server = server) 
} 

Encore une fois, je pense qu'il y a une conception de base que je ne comprends pas. Quelqu'un pourrait-il m'aider à expliquer ce que je devrais faire?

Merci les gars.

Cordialement: Benjamin

+0

dans l'ancienne formulation de la Question il y avait un "Salut les gars" aussi ... Je l'ai oublié cette fois;) –

+0

La seule erreur est sur le côté serveur: 'Erreur dans le tracé: objet 'x' non trouvé' . Vous n'avez simplement pas initialisé votre cadre de données 'x' dans votre application et par conséquent, il ne peut pas être tracée. Qu'est-ce que 'x'? –

+0

Merci Antoine. Auriez-vous des suggestions sur la meilleure façon de le faire? –

Répondre

1

Il n'a pas de sens d'utiliser brillant pour ce genre de terrain, à mon avis. Pour quelles raisons voudriez-vous utiliser Shiny et quelle serait l'utilisation réelle des deux curseurs que vous mentionnez? En dehors de la sous-ensemble de vos données (par exemple avec checkboxInput() pour tracer lorsque MotherAlive == 1 ou 2), je ne vois rien d'autre qui soit pertinent à faire avec Shiny.

Je vais essayer d'afficher toutes les informations contenues dans vos données x avec un seul intrigue. J'utilise l'infrastructure ggplot2:

ggplot(x) + 
    geom_point(aes(x = Deaths, y = Freq, size = Var1, colour = as.factor(MotherAlive))) + 
    geom_line(aes(x = Deaths, y = Freq, colour = as.factor(MotherAlive))) + 
    labs(col = "MotherAlive") + theme_bw() 

enter image description here

C'est la Fréquence en fonction du nombre de Morts, pour chaque valeur de MotherAlive (1 ou 2, contrôlé par la colour argument) et où le size des points indique la valeur de Rye_Prices-Cycle (nommé Var1 dans votre jeu de données).

Quoi d'autre voudriez-vous de Shiny?

+0

Merci Antoine. Je suis d'accord avec vous, votre graphique fait le travail. Mon idée est juste que je veux apprendre brillant. J'ai donc créé ce cadre de données, puis essayé de tracer quelque chose. Je vais essayer votre suggestion avec la case à cocher et proposer quelque chose de plus réfléchi. –

+0

Il y a beaucoup de meilleures façons d'apprendre Shiny, avec des jeux de données dédiés pour cela! Découvrez par exemple cette [liste d'exemples] (https://shiny.rstudio.com/gallery/) faite par Rstudio, entre autres. Tous ces exemples peuvent être reproduits. –