隐藏R中Shiny Application的renderPrint预标记输出

时间:2013-10-01 18:43:59

标签: html css r rstudio shiny

我正在用R开发一个Shiny应用程序。对于renderPrint输出的某些部分,我希望闪亮的用户界面不显示任何内容。有点像HTML5示例中的pre或div标签的隐藏选项,如下所示:

http://www.w3schools.com/tags/tryit.asp?filename=tryhtml5_global_hidden

以下是我的闪亮示例代码。简要说明:您可以使用下拉菜单选择两个变量之一(因子变量或连续变量)。如果您选择因子变量,我想显示标题和table输出。如果你选择连续变量,我不想看到任何东西。现在,如果您输入空白字符串""作为返回renderText,则标题会消失。但是,我不知道如何让renderPrint显示任何内容。我试过了:

  1. ""。不起作用,因为它返回实际的空白字符串
  2. NULL。不起作用,因为它返回字符串NULL
  3. invisible()。到目前为止最好,但仍然无效,因为它返回灰色格式化的框。
  4. 目标是什么都不显示。下面给出了闪亮的ui.r和server.r代码: 库(有光泽)

    ##
    ## Start shiny UI here
    ##
    shinyUI(pageWithSidebar(
    headerPanel("Shiny Example"),
        sidebarPanel(
            wellPanel(
            selectInput(    inputId = "variable1",label = "Select First Variable:", 
                    choices = c("Binary Variable 1" = "binary1",
                    "Continuous Variable 1" = "cont1"),
                    selected = "Binary Variable 1"
            )
            )
    
    
    ),
    mainPanel(
    h5(textOutput("caption2")),
    verbatimTextOutput("out2")
    )
    ))
    
    ##
    ## Start shiny server file and simulated data here
    ##
    binary1 <- rbinom(100,1,0.5)
    cont1   <- rnorm(100)
    dat <- as.data.frame(cbind(binary1, cont1))
    dat$binary1 <- as.factor(dat$binary1)
    dat$cont1 <- as.numeric(dat$cont1)
    
    library(shiny)
    
    shinyServer(function(input, output) {
    
    inputVar1 <- reactive({
    parse(text=sub(" ","",paste("dat$", input$variable1)))
    })
    
    output$caption2 <- renderText({
    if ( (is.factor(eval(inputVar1()))==TRUE) ) {
    caption2 <- "Univariate Table"
    } else {
    if ( (is.numeric(eval(inputVar1()))==TRUE) ) {
    caption2 <- ""
    }
    }
    })
    
    output$out2 <- renderPrint({
    if ( (is.factor(eval(inputVar1()))==TRUE) ) {
    table(eval(inputVar1()))
    } else {
    if ( (is.numeric(eval(inputVar1()))==TRUE) ) {
    invisible()
    } 
    }
    })
    })
    

    一些问题......

    1. 为什么renderText处理与renderPrint不同的隐藏/不可见表示?是因为前者输出文本作为预标签;然而,后者在div标签中显示格式化输出?
    2. 对于那些HTML专家(前期,我不是一个)...什么选项最好让我的输出显示什么?隐藏选项是否最好嵌入pre或div标签中(我知道它在IE浏览器中不起作用)。我应该尝试别的吗? CSS选项等?
    3. 假设隐藏是最好的方法(或者我得到上面的答案),如何通过闪亮的renderPrint函数传递此选项/参数?或者我是否需要使用不同的闪亮功能来实现此功能?
    4. 顺便说一下......我的R版本是:version.string R version 3.0.1 (2013-05-16)我正在使用闪亮版{R package version 0.6.0}。在此先感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

我不确定我是否理解了您的问题,但请尝试以下方法: 这里首先是 Ui

while True:
    print("-------------")
    name=input("Name: ")
    age=input ("Age: ")
    contInput=input("Continue Input? (y/n) ")
    fp.open("test.txt", "a")
    fp.write(name+","+age+"\n")
    if contInput=="n":
        fp.close()
        break
    else:
        continue
with open("test.txt", "r") as fp:
    rd = fp.read().split('\n')
    ????
fp.close()

在此处启动闪亮的服务器文件和模拟数据:

library(shiny)
 ui <- fluidPage(pageWithSidebar(
         headerPanel("Shiny Example"),
          sidebarPanel(
           wellPanel(
           selectInput(inputId = "variable1",label = "Select First Variable:", 
                  choices = c("Binary Variable 1" = "binary1",
                              "Continuous Variable 1" = "cont1"),
                  selected = "Binary Variable 1"
  )
 )
),
   mainPanel(
     h5(textOutput("caption2")),
     verbatimTextOutput("out2", placeholder=TRUE)
 )
 ))

最后:

binary1 <- rbinom(100,1,0.5)
cont1   <- rnorm(100)
dat <- as.data.frame(cbind(binary1, cont1))
dat$binary1 <- as.factor(dat$binary1)
dat$cont1 <- as.numeric(dat$cont1)

server <- (function(input, output) {
  inputVar1 <- reactive({
   parse(text=sub(" ","",paste("dat$", input$variable1)))
  })

 output$caption2 <- renderText({
   if ((is.factor(eval(inputVar1()))==TRUE) ) {
     caption2 <- "Univariate Table"
   } else {
     if ((is.numeric(eval(inputVar1()))==TRUE) ) {
       caption2 <- "Continous"
    }
  }
})

 output$out2 <- renderPrint({
   if ((is.factor(eval(inputVar1()))==TRUE) ) {table(eval(inputVar1()))} 
 })
})