gpt4 book ai didi

R Shiny : non-reactive text output

转载 作者:行者123 更新时间:2023-12-04 12:05:34 24 4
gpt4 key购买 nike

我只是想将输出写入 textOutput 但我不希望它响应任何 react - 我想要完全控制我何时更新文本(对于通知:我想基本上将一些基于后端处理的日志消息写入屏幕)。

如果我添加:verbatimTextOutput("txt")在我的 ui.R 中,然后尝试执行以下操作:

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

关于R Shiny : non-reactive text output,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29657756/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com