gpt4 book ai didi

r - 如何在 r 中的 Shiny 应用程序中计时 react 函数

转载 作者:行者123 更新时间:2023-12-04 10:54:42 25 4
gpt4 key购买 nike

我有一个函数,我想计时,然后在 UI 上显示执行该函数所花费的时间。如何重新主动获取该函数的执行时间?我试图将变量放在 react 函数中,函数周围等。我只想计算 react 函数运行所需的时间,然后显示它。我尽量不使用额外的包。

library(shiny)
# Define UI for application that draws a histogram
ui <- fluidPage(

sidebarPanel(
# User Input Text Box
textInput(inputId = "userText",
label = "",
placeholder = "Type in a partial sentence here..."),
verbatimTextOutput(outputId = "textInput", placeholder = TRUE),

# Show amount of execution time
verbatimTextOutput(outputId = "timer", placeholder = TRUE)
))

server <- function(input, output) {

# Declare Timer variables
startTime <- Sys.time()
endTime <- Sys.time()

# Some function to time: Trivial Paste Function
textToDisplay <- reactive({
req(input$userText)
startTime <- Sys.time()
textToDisplay <- paste("This is the user input text: ", input$userText)
endTime <- Sys.time()
return(textToDisplay)
})

# Display pasted text
output$textInput <- renderText({
req(input$userText)
textToDisplay()

})

# Display execution time
output$timer <- renderText({
req(input$userText)
paste0("Executed in: ",((endTime - startTime)*1000)," milliseconds")
})
}

# Run the application
shinyApp(ui = ui, server = server)

上面的代码没有正确更新或显示适当的时差。

最佳答案

啊,问题是 startTimeendTime 不是 react 值,所以当它们改变时,它们不会导致 renderText 到无效并重新运行,并且它们不会在响应式(Reactive)表达式之外正确保留。

只需定义一个 reactiveValues 对象,并使 startTimeendTime 成为其中的一部分。

将您定义计时器变量的部分替换为:

rv <- reactiveValues()

然后,每次调用 startTimeendTime 时,使用 rv$startTimerv$endTime .

您仍然看不到结果,因为 textToDisplay 运行得太快,但是如果您进行这些更改并将 Sys.sleep(2) 添加到 textToDisplay 您会看到它正常工作。

关于r - 如何在 r 中的 Shiny 应用程序中计时 react 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50335756/

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