如何在R中根据用户输入呈现不同数量的表?
在R Shining应用程序中,我试图根据用户输入呈现不同数量的表。例如,我创建了以下应用程序:如何在R中根据用户输入呈现不同数量的表?,r,shiny,R,Shiny,在R Shining应用程序中,我试图根据用户输入呈现不同数量的表。例如,我创建了以下应用程序: # ui.R fluidPage( numericInput("numeric.input", "Select Number of Tables:", 0, min = 0), tableOutput("table") ) # server.R data(iris) function(input, output) { output$table <- renderTable(
# ui.R
fluidPage(
numericInput("numeric.input", "Select Number of Tables:", 0, min = 0),
tableOutput("table")
)
# server.R
data(iris)
function(input, output) {
output$table <- renderTable({
head(iris)
})
}
#ui.R
流动摄影(
数值输入(“numeric.input”,“选择表格数量:”,0,min=0),
表格输出(“表格”)
)
#服务器.R
数据(iris)
功能(输入、输出){
output$table我已经通过使用解决了这个问题,但是。下面的代码工作正常:
# ui.R
fluidPage(
numericInput("numeric.input", "Select Number of Tables:", 1, min = 1),
uiOutput("tables")
)
# server.R
data(iris)
function(input, output) {
# Rendering tables dependent on user input.
observeEvent(input$numeric.input, {
lapply(1:input$numeric.input, function(i) {
output[[paste0('table', i)]] <- renderTable({
head(iris)
})
})
})
# Rendering UI and outputtign tables dependent on user input.
output$tables <- renderUI({
lapply(1:input$numeric.input, function(i) {
uiOutput(paste0('table', i))
})
})
}
#ui.R
流动摄影(
数值输入(“numeric.input”,“选择表格数量:”,1,min=1),
UIO输出(“表格”)
)
#服务器.R
数据(iris)
功能(输入、输出){
#呈现依赖于用户输入的表。
observeEvent(输入$numeric.input{
lappy(1:input$numeric.input,函数(i){
输出[[paste0('table',i)]]您的方法简单明了。根据@r2evans在评论中提供的链接,只需为此目的使用insertUI
和removeUI
ui <- fluidPage(
numericInput("numericinput", "Select Number of Tables:", 0, min = 0),
tags$div(id = 'tabledisplay')
)
server <- function(input, output) {
inserted <- c()
observeEvent(input$numericinput, {
tablenum <- input$numericinput
id <- paste0('table', tablenum)
if (input$numericinput > length(inserted)) {
insertUI(selector = '#tabledisplay',
ui = tags$div(h4(
paste0("Table number ", input$numericinput)
), tags$p(renderTable({
head(iris)
})),
id = id))
inserted <<- c(id, inserted)
}
else {
inserted <- sort(inserted)
removeUI(selector = paste0('#', inserted[length(inserted)]))
inserted <<- inserted[-length(inserted)]
}
})
}
shinyApp(ui, server)
ui