这是我的实际代码:
ui.R
shinyUI(fluidPage(
titlePanel("Visualition de cube"),
sidebarLayout(
sidebarPanel(
selectInput("choixCube", "Choix du cube :", choices = NULL),
selectInput("choixDim", "Choix des dimensions", choices = NULL),
selectInput("choixMes", "Choix des mesures", choices = NULL)
),
mainPanel(
plotOutput("distPlot")
)
)
))
server.R
library(shiny)
library(jsonlite)
library(data.table)
library(dplyr)
json <- fromJSON("./init.json")
cubes <- json$cube %>% setDT()
shinyServer(function(input, output, session) {
observe({
updateSelectInput(session, "choixCube",choices = cubes$name)
})
test <- reactive({
if(!is.null(input$choixCube)){
cubes[name == input$choixCube, dim][[1]]
}
})
observe({
updateSelectInput(session, "choixDim", choices = test)
})
})
如您所见,我正在加载一个init JSON文件,其中包含有关我加载的数据的信息。我想用json过滤器的数据框中的“dim”列中的列表填充“choixDim”字段。
我该怎么做?
答案 0 :(得分:0)
在这种情况下,最好在单独的global.R文件中分离json和库的加载。这里加载的任何内容也可以在ui中找到。请注意,我已将json文件更改为简单的data.frame,创建一个工作示例。
ui.R
shinyUI(fluidPage(
titlePanel("Visualition de cube"),
sidebarLayout(
sidebarPanel(
selectInput("choixCube", "Choix du cube :", choices = NULL),
selectInput("choixDim", "Choix des dimensions", choices = json$dim),
selectInput("choixMes", "Choix des mesures", choices = NULL)
),
mainPanel(
plotOutput("distPlot")
)
)
))
server.R
cubes <- json$cube %>% setDT()
shinyServer(function(input, output, session) {
observe({
updateSelectInput(session, "choixCube",choices = cubes$name)
})
test <- reactive({
if(!is.null(input$choixCube)){
cubes[name == input$choixCube, dim][[1]]
}
})
})
global.R
library(shiny)
library(jsonlite)
library(data.table)
library(dplyr)
json <- data.frame(dim= c("dim1","dim2","dim3"))
希望这有帮助!