在后台加载闪亮的 tabPanel
Load shiny tabPanel in background
我闪亮的 ui.R
中有几个 tabPanel()
块,它们都需要一些时间来加载。但是,它们似乎都被视为单独的页面,并且只有在导航栏中 tabPanel()
为 select 时才开始呈现。
有没有办法在后台加载初始选项卡后预加载这些页面?
我尝试在我的服务器函数底部包含以下内容:
sapply(names(outputOptions(output)),function(x) outputOptions(output, x, suspendWhenHidden = FALSE))
这适用于存在于观察者或反应上下文之外的输出变量,但不适用于内部变量。
对维克多普的回应
我尽量避免将 renderPlot
放在 observer
调用中,但我有一个 reactiveVariable
data.frame 是通过文件轮询调用设置的然后需要对其进行子集化和转换。
该转换用于一系列绘图。在结构上更容易将 reactiveValue
放在 observer
子集中一次,然后让所有生成的图使用该非反应性子集。
Data = reactivePoll(5479,
session,
checkFunc = function() {
if (file.exists(orderStatsPath))
file.info(orderStatsPath)$mtime[1]
else
""
},
valueFunc = function() getData(orderStatsPath)
)
observe({
Data = Data()
Data = subset(Data, subset = Date >= Sys.Date() - 14)
Data$Date = as.character(Data$Date)
output$slippageRootTotalUSD = shiny::renderTable({
result = dcast(Data,
Date ~ Symbol,
value.var = "slippageRootTotalUSD",
na.rm = T,
fun = sum,
margins = c("Date","Symbol"))
rownames(result) = result[,1]
result = signif(result[,-1],5)
result
},
rownames = TRUE,
hover = TRUE,
digits = 2,
spacing = 's'
)
output$SizeUSD = shiny::renderTable(
{
result = dcast(Data,
Date ~ Symbol,
value.var = "SizeUSD",
na.rm = T,
fun = sum,
margins = c("Date","Symbol"))
rownames(result) = result[,1]
result = round(result[,-1],0)
result
},
rownames = TRUE,
hover = TRUE,
digits = 0,
spacing = 's'
)
sapply(names(outputOptions(output)),function(x) outputOptions(output, x, suspendWhenHidden = FALSE))
}
看看 ?outputOptions
,你可能想用那个 :
# Disable suspend for output$myplot
outputOptions(output, "myplot", suspendWhenHidden = FALSE)
我闪亮的 ui.R
中有几个 tabPanel()
块,它们都需要一些时间来加载。但是,它们似乎都被视为单独的页面,并且只有在导航栏中 tabPanel()
为 select 时才开始呈现。
有没有办法在后台加载初始选项卡后预加载这些页面?
我尝试在我的服务器函数底部包含以下内容:
sapply(names(outputOptions(output)),function(x) outputOptions(output, x, suspendWhenHidden = FALSE))
这适用于存在于观察者或反应上下文之外的输出变量,但不适用于内部变量。
对维克多普的回应
我尽量避免将 renderPlot
放在 observer
调用中,但我有一个 reactiveVariable
data.frame 是通过文件轮询调用设置的然后需要对其进行子集化和转换。
该转换用于一系列绘图。在结构上更容易将 reactiveValue
放在 observer
子集中一次,然后让所有生成的图使用该非反应性子集。
Data = reactivePoll(5479,
session,
checkFunc = function() {
if (file.exists(orderStatsPath))
file.info(orderStatsPath)$mtime[1]
else
""
},
valueFunc = function() getData(orderStatsPath)
)
observe({
Data = Data()
Data = subset(Data, subset = Date >= Sys.Date() - 14)
Data$Date = as.character(Data$Date)
output$slippageRootTotalUSD = shiny::renderTable({
result = dcast(Data,
Date ~ Symbol,
value.var = "slippageRootTotalUSD",
na.rm = T,
fun = sum,
margins = c("Date","Symbol"))
rownames(result) = result[,1]
result = signif(result[,-1],5)
result
},
rownames = TRUE,
hover = TRUE,
digits = 2,
spacing = 's'
)
output$SizeUSD = shiny::renderTable(
{
result = dcast(Data,
Date ~ Symbol,
value.var = "SizeUSD",
na.rm = T,
fun = sum,
margins = c("Date","Symbol"))
rownames(result) = result[,1]
result = round(result[,-1],0)
result
},
rownames = TRUE,
hover = TRUE,
digits = 0,
spacing = 's'
)
sapply(names(outputOptions(output)),function(x) outputOptions(output, x, suspendWhenHidden = FALSE))
}
看看 ?outputOptions
,你可能想用那个 :
# Disable suspend for output$myplot
outputOptions(output, "myplot", suspendWhenHidden = FALSE)