2 votes

shinydashboard ui.R et server.R ne lisent pas Global.R

J'ai réussi à utiliser global.R pour passer des données à ui.r et server.R en développant dans RStudio. Cependant, lorsque je migre mon code vers le serveur, ni ui.R ni server.R ne sont capables de lire global.R. J'utilise Shiny Server (pas pro). Quelle pourrait être la cause de ce problème ?

Mon code ressemble à ceci (il n'est pas réactif)

#global.R
x = 10

#ui.R
print(x)
> 10 #in RStudio viewer
> Error: object 'x' not found #on Shiny Server

Suite à la réponse de sigmabeta ci-dessous, j'ai apporté des modifications à server.R y global.R Cependant, je cherche à ce que le serveur réinitialise x à une autre valeur afin qu'il puisse être lu par ui.R . Voici ce que mon code est maintenant

#global.R
x = 10
get_x_value <- function (n) {
x = n+1        
return x
}

#server.R
source("./global.R")

shinyServer(function(input, output) {
values <- reactiveValues()
observe ({
    values$x <- get_x_value(5)
})
})

#ui.R
print(x)
> 6 #in RStudio viewer
> 10 #on Shiny Server

Voici le code actuel dans ui.R où j'essaie de définir l'état de la boîte sur la base des valeurs déjà calculées dans server.R

library(shinydashboard)
dashboardPage(
  Header = dashboardHeader(title = 'Test'), 
  Sidebar = dashboardSidebar
  (
  sidebarMenu
  (
  menuItem("ABC", tabName = "ABC")
  )
  ),
  Body = dashboardBody
  (tabItems
  (
  tabItem(
    tabName = "ABC",
    fluidRow
    (
    box
    (
    status = if (x==6) "info" else "danger" ,
    solidHeader = TRUE
    )
    )
  )
  )
  )
)

2voto

sigmabeta Points 327

Il semble que vous n'ayez pas indiqué à votre application brillante qu'elle doit récupérer des valeurs (et/ou) des fonctions dans global.R.

Vous pouvez le faire dans le fichier server.R. Exemple de code du fichier server.R :

library(shiny)

source("./global.R")

shinyServer(function(input, output) {
values <- reactiveValues()
observe ({
    values$x <- get_x_value()
})
output$text1 <- renderText({
   values$x
})

})

Ensuite, dans global.R, vous aurez la fonction get_x_value así:

get_x_value <- function () {
    x = 10
    return x
}

x peut également être défini à l'extérieur, et il se peut que vous souhaitiez effectuer un traitement supplémentaire, le cas échéant, dans la fonction ou écrire des fonctions plus complexes.

Mise à jour : Ajout du code pour ui.R

shinyUI(fluidPage(
mainPanel(
    htmlOutput(
        textOutput("text1")
    )
))

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X