我正在生成3个基于for循环的值框;
for ( i in 0:3) {
name = as.character(i)
output[[name]] <- ({
renderValueBox(
valueBox(value = i,
icon = "fa-euro")
)
})
}
作为值,对于这个例子,我会显示i,并且当我这样调用它时,它希望显示1,2,3;
###
```{r}
valueBoxOutput("0")
```
###
```{r}
valueBoxOutput("1")
```
###
```{r}
valueBoxOutput("2")
```
然而,因为它是被动的而且我在渲染时是3,我不会那样,我将有3个值框显示3.这里的最终目标是根据被动加载的数据框有3个值框,就像这样;
set_aggregated <- reactiveFileReader(1000, session, "./rdsdata/set_aggregated.rds", readRDS)
然后在那里调用不同的值;
output[[name]] <- ({
renderValueBox(
valueBox(value = hub_set_aggregated()[i, "code"],
color = ddy_colour_4,
icon = "fa-euro")
)
})
我想我明白为什么它不起作用。但不知道如何让它发挥作用。
答案 0 :(得分:3)
使用创建正确闭包的函数而不是直接在循环中执行它会更安全。例如
rvb <- function(i) {
force(i)
renderValueBox(valueBox(value = i, icon = "fa-euro"))
}
for ( i in 0:3) {
name = as.character(i)
output[[name]] <- rvb(i)
}