1
首先,我知道有很多线索可以解决我的问题,我都读过它们,但是我没有做到。我得到了10 data.frame的名单,我通过下面的代码生成:R Shiny:选项卡中的表格的动态数量
list_of_df=list()
for (i in seq(1,10)){
number_row=sample(seq(5,10),size = 1)
num=seq(1,number_row)
val=sample(x = letters,size = number_row,replace = TRUE)
df=data.frame(num=num,
val=val)
rownames(df)=NULL
list_of_df[[i]]=df
}
我希望用户输入n,表的数量,他希望看到的。然后显示list_of_df中的n个随机表。我想要在选项卡中显示这些表格。这是我所做的,我在这里和那里抓住了一些想法,但显然它不起作用,我不知道为什么。
library(shiny)
# ui function
ui = pageWithSidebar(
headerPanel('Dynamic Tabs'),
sidebarPanel(
numericInput(inputId = "numput",label = "number of tables",value = 1,min = 1,max = 5)
),
mainPanel(
uiOutput('mytabs')
)
)
# server function
server = function(input, output, session){
random_tables<- reactive({
index=sample(seq(1,10),size = input$numput,replace=FALSE)
list_of_df[[index]]
})
size<-reactive({
length(random_tables())
})
for (i in 1:size()) {
local({
my_i <- i
tablename <- paste("table_", my_i, sep="")
output[[tablename]] <- renderTable({
random_tables()[[i]]
})
})
}
output$mytabs = renderUI({
nTabs = size()
myTabs = lapply(paste0('table_', 1: nTabs), function(x){
tabPanel(x, tableOutput(x))
})
do.call(tabsetPanel, myTabs)
})
}
shinyApp(ui, server)
所以,如果你看到我应该做的......
非常感谢您的解释。现在对我来说更加清晰。我有点麻烦来理解观察部分,但我想我会。 –