我正在 R 中开发一个闪亮的应用程序。对于某些renderPrint
输出,我希望闪亮的用户界面不显示任何内容。有点像 HTML5 示例中 pre 或 div 标签的隐藏选项,如下所示:
http://www.w3schools.com/tags/tryit.asp?filename=tryhtml5_global_hidden
下面是我闪亮的示例代码。简要说明:您可以使用下拉菜单选择两个变量(因子变量或连续变量)之一。如果您选择因子变量,我想显示标题和table
输出。如果您选择连续变量,我不想看到任何东西。现在,如果您插入一个空白字符串""
作为对renderText
. 但是,我不知道如何才能renderPrint
显示任何内容。我试过了:
""
. 不起作用,因为它返回实际的空白字符串NULL
. 不起作用,因为它返回字符串 NULLinvisible()
. 迄今为止最好的,但仍然无法正常工作,因为它返回了灰色的格式化框。
目标是什么都不显示。闪亮的 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()
}
}
})
})
几个问题...
- 为什么
renderText
处理隐藏/不可见的演示文稿不同于renderPrint
?是不是因为前者输出文本作为前置标签?而后者在 div 标签中显示格式化输出? - 对于那些 HTML 专家(预先,我不是其中之一)......什么选项最好让我的输出不显示任何内容?嵌入在 pre 或 div 标签中的隐藏选项最好(我知道它在 IE 浏览器中不起作用)。我应该尝试别的吗?CSS选项等?
- 假设 hidden 是最好的方法(或者我得到了上面 2. 的答案),我如何通过
renderPrint
闪亮的函数传递这个选项/参数?还是我需要使用不同的闪亮功能来实现此功能?
顺便说一句...我的 R 版本是:version.string R version 3.0.1 (2013-05-16)
我正在使用闪亮版本{R package version 0.6.0}
。在此先感谢您的帮助。