[英]R Shiny : non-reactive text output
我只是尝试将输出写入textOutput但我不希望它响应任何被动 - 我想要完全控制何时更新文本(对于通知:我想基本上根据后端处理将一些日志消息写入到屏幕)。
如果我在我的ui.R中添加: verbatimTextOutput("txt")
,然后尝试:
observeEvent(input$someButton, {
... # do some work
output$txt <- "some text" #Error: see below
... # do some more work
})
我收到警告:观察者中的未处理错误:txt的意外字符输出
增加 :可重复的例子:
server <- function(input, output) {
observeEvent(input$doBtn, {
#... do some work
output$txt <- "some text" #crashes app.
#... do some more work
})
output$distPlot <- renderPlot({
hist(rnorm(input$obs), col = 'darkgray', border = 'white')
})
}
ui <- shinyUI(fluidPage(
mainPanel(
verbatimTextOutput("txt"),
actionButton("doBtn", "Do something")
)
))
shinyApp(ui = ui, server = server)
是否可以以这种方式直接引用文本输出元素,而不将其包装在自己的render *函数中? 我不认为我可以太简单地删除错误消息,因为正在更新的文本非常简单。 是的,我知道withProgress()等,但在这种情况下,这不是我想要的。
谢谢。
如果你真的想输出到屏幕上,你仍然可以使用renderText
你的内observeEvent
。 我添加了一条附加文本消息来演示htmlOutput
的使用,以防您不希望文本周围有该框。
require(shiny)
runApp(
list(
ui = pageWithSidebar(
headerPanel("text test"),
sidebarPanel(
p("Demo Page."),
actionButton("doBtn", "Do something")
),
mainPanel(
verbatimTextOutput("txt"),
htmlOutput("text2")
)
),
server = function(input, output){
observeEvent(input$doBtn, {
#... # do some work
output$txt <- renderText("some text")
#... # do some more work
})
output$text2 <- renderUI({
HTML("my awesome text message in HTML!!!")
})
}
)
)
另一方面,如果你只是需要一些东西打印到控制台你可以使用cat
,如文档中所示?observerEvent
observeEvent(input$doBtn, {
cat("some text")
})
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.