RHandsontable - renderUI 映射
RHandsontable - renderUI Mapping
我想显示一个 HoT table 闪亮的每个切片因子,来自具有动态切片的数据集。下面是我实现此目的的最佳尝试,但输出是重复的 table。您可以从打印输出中的拆分数据框中看到一切看起来都是正确的,但 RHandsontable 似乎有一个问题,它只指向地图中创建的最后一个 HoT。
知道如何实现显示不同的数据帧吗?
library(shiny)
library(dplyr)
library(rhandsontable)
library(purrr)
ui <- fluidPage(
uiOutput('tables')
)
server <- function(input, output) {
mtcars$slc <- sample(c('aaa','bbb'),nrow(mtcars),replace=TRUE)
df <- mtcars
getSlice <- function(df_tmp,slca){
print(slca)
df_tmp <- df_tmp %>% filter(slc==slca)
df_tmp
}
output$tables <- renderUI({
slices <- unique(df$slc)
input_dfs <- map(slices,~getSlice(df,.x))
for(i in 1:length(slices)){
print(input_dfs[[i]]) # proof that there are two distinct data
# frames going into renderRHandsontable()
output[[slices[i]]] <- renderRHandsontable(rhandsontable(input_dfs[[i]]))
}
out <- map(slices,function(x){
rHandsontableOutput(x)
})
print(out) # div ids are correctly distinct, but the tables that show are not!
out
})
}
shinyApp(ui = ui, server = server)
输出 - 所有 'aaa' 重复...
在你的 for 循环中使用 local()
。
for(i in 1:length(slices)){
local({
i <- i
print(input_dfs[[i]]) # proof that there are two distinct data
# frames going into renderRHandsontable()
output[[slices[i]]] <- renderRHandsontable(rhandsontable(input_dfs[[i]]))
})
}
我想显示一个 HoT table 闪亮的每个切片因子,来自具有动态切片的数据集。下面是我实现此目的的最佳尝试,但输出是重复的 table。您可以从打印输出中的拆分数据框中看到一切看起来都是正确的,但 RHandsontable 似乎有一个问题,它只指向地图中创建的最后一个 HoT。
知道如何实现显示不同的数据帧吗?
library(shiny)
library(dplyr)
library(rhandsontable)
library(purrr)
ui <- fluidPage(
uiOutput('tables')
)
server <- function(input, output) {
mtcars$slc <- sample(c('aaa','bbb'),nrow(mtcars),replace=TRUE)
df <- mtcars
getSlice <- function(df_tmp,slca){
print(slca)
df_tmp <- df_tmp %>% filter(slc==slca)
df_tmp
}
output$tables <- renderUI({
slices <- unique(df$slc)
input_dfs <- map(slices,~getSlice(df,.x))
for(i in 1:length(slices)){
print(input_dfs[[i]]) # proof that there are two distinct data
# frames going into renderRHandsontable()
output[[slices[i]]] <- renderRHandsontable(rhandsontable(input_dfs[[i]]))
}
out <- map(slices,function(x){
rHandsontableOutput(x)
})
print(out) # div ids are correctly distinct, but the tables that show are not!
out
})
}
shinyApp(ui = ui, server = server)
输出 - 所有 'aaa' 重复...
在你的 for 循环中使用 local()
。
for(i in 1:length(slices)){
local({
i <- i
print(input_dfs[[i]]) # proof that there are two distinct data
# frames going into renderRHandsontable()
output[[slices[i]]] <- renderRHandsontable(rhandsontable(input_dfs[[i]]))
})
}