R光亮条件面板输出值 [英] R shiny conditionalPanel output value

查看:15
本文介绍了R光亮条件面板输出值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在R SHINY中有很多关于conditionalPanel的问题,但是我仍然不明白如何使用server.R为conditionalPanel创建的值。下面是我想要做的:我有一个类似http://some-url.com/php/session_check.php?sid=session_id的URL。当session_id以0开头时,就像http://some-url.com/php/session_check.php?sid=00221245一样,返回一个带有用户名的字符串(例如‘testuser’)。如果session_id以除0以外的任何其他数字开始,如http://some-url.com/php/session_check.php?sid=10221245,则返回0。现在我想隐藏一个面板,具体取决于返回的是0还是用户名。因此,我尝试这样做:

conditionalPanel(
 condition="output.disable_ui!=0"

我知道这是错误的,但我并不真正了解condition参数对outputs的工作原理,因为如果我对ui.R中的任何input执行此操作,也会如此。

以下是我的示例代码:

server.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"
  })
})

ui.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")
  )
))

推荐答案

我觉得output要在conditionalPanel条件下使用,必须在UI中渲染。

对于您的示例,条件面板的HTML将如下所示:

<div data-display-if="output.disable_ui!=0">

如果页面中没有元素(在服务器端作为输出创建)具有ID";Disable_UI";,则条件";output.Disable_UI!=0";始终为真,并且始终显示"条件"面板。

简单示例:

shiny::runApp(list( 
  ui = pageWithSidebar(
    
    headerPanel("test"),
    
    sidebarPanel(
      selectInput(
        "var", "Var",
        0:9)),
    
    mainPanel(
      verbatimTextOutput("id"),
      conditionalPanel(
        condition="output.id!=0",
        h4('Visible')
      )
    )
  ),
  server = function(input, output) {
    
    output$id<-reactive({input$var})
    
  }
))

如果您选择的数字不是0,则将显示条件面板。 现在,注释verbatimTextOutput("id"),行,页面中不再有id";id";的元素,条件面板<div data-display-if="output.id!=0">的条件不能为false。

这篇关于R光亮条件面板输出值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆