4

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

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

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

  1. "". 不起作用,因为它返回实际的空白字符串
  2. NULL. 不起作用,因为它返回字符串 NULL
  3. invisible(). 迄今为止最好的,但仍然无法正常工作,因为它返回了灰色的格式化框。

目标是什么都不显示。闪亮的 ui.r 和 server.r 代码如下: library(shiny)

##
## 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. 假设 hidden 是最好的方法(或者我得到了上面 2. 的答案),我如何通过renderPrint闪亮的函数传递这个选项/参数?还是我需要使用不同的闪亮功能来实现此功能?

顺便说一句...我的 R 版本是:version.string R version 3.0.1 (2013-05-16)我正在使用闪亮版本{R package version 0.6.0}。在此先感谢您的帮助。

4

1 回答 1

0

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

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()))} 
 })
})

最后:

shinyApp(ui = ui, server = server)
于 2018-02-07T23:51:30.387 回答