如何解决R Shiny 如何在函数内更新ProgressBar?
我是新来的,如有错误请见谅。
library(shinydashboard)
library(shinyWidgets)
#### Header ####
header <- dashboardHeader()
#### Sidebar ####
sidebar <- dashboardSidebar()
#### Body ####
body <- dashboardBody(
actionButton("go",label = "Go!"),# Loading Bar
progressBar("progress",value=0,total=100,title="",display_pct = TRUE)
)
ui = dashboardPage(header,sidebar,body)
#### Server ####
server <- function(input,output,session){
observeEvent(input$go,{
for(i in 1:13){
updateProgressBar(
session = session,id = "progress",value = i,total = 13,title = paste("Progress ",i,"/",13)
)
Sys.sleep(0.2)
}
}
)
}
shinyApp(ui,server)
但是现在我需要通过已经定义的函数中的一些代码(实际上是在源代码中)来更新progressBar。作为我定义的测试:
test_func <- function(){
for(i in 1:13){
updateProgressBar(
session = session,13)
)
Sys.sleep(0.2)
}
}
并将服务器编辑为:
#### Server ####
server <- function(input,{
test_func()
}
)
}
我收到以下错误: “对象类型闭包不可子集”
我怎样才能以正确的方式做到这一点? 提前致谢。
解决方法
您的问题似乎与环境有关。
当我在服务器函数之外定义 test_func
时出现错误(与您的不同)。当我在服务器功能内部定义它时,我得到了预期的行为。您可以在服务器功能中获取外部文件吗?
如果不是,则将 session
作为参数传递给 test_func
。当我这样做并在服务器函数之外定义 test_func
时,一切都按预期工作。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。