创建运行模块R/s的输入元素的动态数量
我对堆栈溢出问题不太熟悉,请提前原谅我。我试图创建运行模块的动态数量的输入元素。我的问题的最相似解决方案可以在以下答案中找到: 代码复制如下:创建运行模块R/s的输入元素的动态数量,r,shiny,R,Shiny,我对堆栈溢出问题不太熟悉,请提前原谅我。我试图创建运行模块的动态数量的输入元素。我的问题的最相似解决方案可以在以下答案中找到: 代码复制如下: ui.R ---- shinyUI( pageWithSideBar( ... selectInput("numIndividuals", ...) uiOutput("sliders"), ... )) server.R -------- shinyServer( function(input, output,
ui.R
----
shinyUI( pageWithSideBar(
...
selectInput("numIndividuals", ...)
uiOutput("sliders"),
...
))
server.R
--------
shinyServer( function(input, output, session) {
output$sliders <- renderUI({
numIndividuals <- as.integer(input$numIndividuals)
lapply(1:numIndividuals, function(i) {
sliderInput(...)
})
})
})
ui.R
----
shinyUI(带侧栏的页面)(
...
选择输入(“numIndividuals”,…)
uiOutput(“滑块”),
...
))
服务器.R
--------
shinyServer(功能(输入、输出、会话){
输出$sliders欢迎使用SO。请提供一个最简单的示例,说明什么不起作用?您到底在哪里遇到了问题?我想您似乎是问题所在?这里几乎有一个类似的示例。只需将slideriput()
替换为sliderUI()
我用一个不包含模块的工作示例和一个与上述示例类似的损坏示例重新发布了这个问题。我将其作为一个新问题重新打开,因为我不确定我问这个问题的方式是否真的抓住了我要找的内容。请查看,任何和所有建议都将受到欢迎。inputNa我
#slider module ------------------------
sliderUI <- function(id) {
ns <- NS(id)
sliderInput(ns("bins"), "Number of Bins:", min = 1, max = 5, value = 3)
}
slider <- function(input, output, session) {}
library(shiny)
#module
NumberUI <- function(id){
ns <- NS(id)
numericInput(ns("obs"), "Observations:", 10, min = 1, max = 100)
}
Number <- function(input, output, session){}
ui <- shinyUI(fluidPage(
titlePanel("Test"),
sidebarLayout(
sidebarPanel(
numericInput("numInputs", "How many inputs do you want", 4),
# place to hold dynamic inputs
uiOutput("inputGroup")
),
# this is just a demo to show the input values, I want to be able to update
mainPanel(
textOutput("inputValues")
)
)
))
server <- shinyServer(function(input, output) {
# observe changes in "numInputs", and create corresponding number of inputs
observeEvent(input$numInputs, {
LL <- vector("list", input$numInputs)
output$inputGroup = renderUI({
input_list <- lapply(1:input$numInputs, function(i) {
inputName <- paste0("input", i)
LL[[i]]<- list(NumberUI(inputName))
})
})
#run module
lapply(1:input$numInputs, function(i) {
inputName <- paste0("input", i)
callModule(Number, inputName)
})
})
# this is to display all the input values which I want, this doesn't work
output$inputValues <- renderPrint({
paste(lapply(1:input$numInputs, function(i) {
inputName <- paste0("input", i)
input[[inputName]]
}))
})
})
shinyApp(ui, server)