【发布时间】:2018-03-23 11:01:31
【问题描述】:
背景
我有一个简单的应用程序,在global.R 中启动时会加载多个文件,加载数据文件的代码如下所示:
lst_dta <- lapply(X = seq_along(vec_dta_fls),
function(i) {
incProgress(
amount = 1 / length(vec_dta_fls),
message = paste("Reading file:", vec_dta_fls[i])
)
readr::read_rds(vec_dta_fls[i])
vec_dta_fls 包含源文件的文件路径。
问题
我想将此过程封装在withProgress 调用中,以提供有关进度的动态信息。
代码
withProgress(message = "Reading data files:",
expr = {
lst_dta <- lapply(X = seq_along(vec_dta_fls),
function(i) {
incProgress(
amount = 1 / length(vec_dta_fls),
message = paste("Reading file:", vec_dta_fls[i])
)
readr::read_rds(vec_dta_fls[i])
})
})
错误信息
withProgress(message = "Reading data files:", expr = {中的错误:'session'不是 ShinySession 对象。
注意事项
我知道这是因为我在响应式上下文中调用withProgress,正如linked article 中所建议的那样:
添加进度指示器最简单的方法是把 withProgress() 在 reactive()、observer() 或 renderXx() 的内部
有什么办法可以解决吗?对于这种特殊情况,我不想在响应式上下文中调用 withProgress,因为实际上我只想显示此加载消息一次。
【问题讨论】:
标签: r shiny reactive-programming