R brillant conditionalPanel valeur de sortie
Il ya beaucoup de questions à propos de conditionalPanel
dans la R brillant, mais je ne comprends toujours pas comment je peux utiliser des valeurs créées par le serveur.R pour conditionalPanel
. Voici ce que je voudrais faire: j'ai une URL du type http://some-url.com/php/session_check.php?sid=session_id. Lorsque le session_id
commence par un 0, comme http://some-url.com/php/session_check.php?sid=00221245 une chaîne avec un nom d'utilisateur est renvoyé (par exemple 'testuser'). Lorsque le session_id commence avec un autre numéro, mais 0, comme http://some-url.com/php/session_check.php?sid=10221245 un 0 est renvoyé. Maintenant, je voudrais masquer un panneau, en fonction de si le un 0 ou un nom d'utilisateur est renvoyé. Donc j'ai essayer de faire quelque chose comme ceci:
conditionalPanel(
condition="output.disable_ui!=0"
Je sais que c'est mauvais, mais je ne comprends pas vraiment comment le condition
argument fonctionne pour outputs
, même si je voudrais le faire pour tout input
de ui.R
.
Voici mon exemple de code:
serveur.R
library(shiny)
library(raster)
library(rgdal)
shinyServer(function(input, output, clientData) {
output$disable_ui<-reactive({
query<-parseQueryString(clientData$url_search)
url_path<-paste(sep="","http://some-url.com/php/session_check.php?sid=",query, collapse="")
read.table(url_path)
})
data <- reactive({
inFile <- input$example_layer
if (is.null(inFile))
return(NULL)
raster.file<- raster(inFile$datapath)
})
output$raster.plot <- renderPrint({
"Nothing to see here"
})
})
de l'interface utilisateur.R
library(shiny)
shinyUI(pageWithSidebar(
headerPanel("test"),
sidebarPanel(
conditionalPanel(
condition="output.disable_ui!=0",
#File Upload
fileInput('example_layer', 'Choose Raster Layer (ASCII)', multiple=FALSE, accept='asc')
)),
mainPanel(
verbatimTextOutput("raster.plot")
)
))
Il n'est pas vraiment sur le bouton de téléchargement de fichiers. Tout ce que je veux dire, c'est que la barre latérale du panneau ou même tous les panneaux ne sont pas affichés lorsque l'url donne en retour un " 0 " et tous les panneaux sont affichés lorsque l'url renvoie certains 'nom d'utilisateur'.
OriginalL'auteur viktor_r | 2014-02-06
Vous devez vous connecter pour publier un commentaire.
Je pense que le
output
doit être rendu dans l'Interface utilisateur si vous souhaitez l'utiliser après dans la condition d'unconditionalPanel
.Avec vous exemple, le code HTML pour le conditionnel panneau ressemblera à quelque chose comme ceci :
<div data-display-if="output.disable_ui!=0">
Si pas d'éléments dans votre page (créé en tant que sorties dans le côté serveur) à l'identifiant "disable_ui" alors la condition de sortie".disable_ui!=0" est toujours VRAI, et le conditionnel panneau de toujours affiché.
Un exemple simple :
Si vous sélectionnez un nombre différent de 0, le conditionnel panneau s'affiche.
Maintenant, mettez en commentaire la ligne
verbatimTextOutput("id"),
, il n'y a pas plus d'élément avec l'id "id" dans la page et de la condition de la conditionnal panneau<div data-display-if="output.id!=0">
ne peut pas être FAUX.OriginalL'auteur Julien Navarre
@Julien Navarre a raison: la sortie doit être rendu. Sauf si vous définissez l'option
suspendWhenHidden
àFALSE
:suspendWhenHidden
faire? Je viens de copier la ligne dans mon code et ça ne fonctionne pas. Mais il semble que j'ai vraiment intéressant solution, j'aimerais comprendre.MerciJe ne connais pas les détails techniques, mais concrètement si elle est définie à
TRUE
alors la sortie est "détecté" seulement quand il est rendu. C'est la solution la plus propre. Autre exemple ici: stackoverflow.com/questions/19686581/...Je vous remercie.
OriginalL'auteur Stéphane Laurent
C'est la vraie réponse à cette question:
Utilisez ceci à l'intérieur de votre fonction de serveur:
Vous serez alors en mesure d'utiliser le
output.item
dans votre conditionalPanel.Réponse à partir d'ici:
https://github.com/daattali/advanced-shiny/blob/master/server-to-ui-variable/app.R
Et ici:
https://github.com/rstudio/shiny/issues/1318
Ce n'est plus un lien unique réponse.
OriginalL'auteur clancy