我的真實資料在回圈中生成多個表,我想以閃亮的方式展示它們。
當我測驗假資料時,我無法通過 for 回圈生成多選項卡表,這是我的代碼:
library(shiny)
df1<-data.frame(matrix(ncol = 5,nrow = 10,data = runif(50,0,100),dimnames = list(1:10,paste0("S",1:5))))
ui <- fluidPage(
fluidRow(
tabsetPanel(
tabPanel("S1",tableOutput("S1")),
tabPanel("S2",tableOutput("S2")),
tabPanel("S3",tableOutput("S3")),
tabPanel("S4",tableOutput("S4")),
tabPanel("S5",tableOutput("S5"))
)
),
##not working here
fluidRow(
tabsetPanel(
for(i in 1:ncol(df1)){
tabPanel(title = paste0("S",i),tableOutput(outputId = paste0("test_S",i)))
}
)
)
)
server <- function(input, output) {
output$S1<-renderTable(df1[1])
output$S2<-renderTable(df1[2])
output$S3<-renderTable(df1[3])
output$S4<-renderTable(df1[4])
output$S5<-renderTable(df1[5])
##not woking here
for(i in 1:ncol(df1)){
id<-paste0("test_S",i)
output[[id]]<-renderTable(df1[i])
}
}
shinyApp(ui = ui, server = server)

代碼在 for 回圈部分生成注釋,如何修改 for 回圈部分以生成與上表相同的結果?
uj5u.com熱心網友回復:
我會嘗試使用lapply在server而不是創建您的動態內容ui。這將包括renderUI根據您的 data.frame(列數)創建選項卡的動態數量,以及observe動態創建renderTable輸出。讓我知道這是否是您的想法。
library(shiny)
set.seed(42)
df1 <- data.frame(matrix(ncol = 5, nrow = 10, data = runif(50, 0, 100),
dimnames = list(1:10, paste0("S", 1:5))))
ui <- fluidPage(
uiOutput("mytabs")
)
server <- function(input, output) {
output$mytabs <- renderUI({
thetabs <- lapply(paste0('table_', seq_len(ncol(df1))),
function(x) {
tabPanel(x, tableOutput(x))
})
do.call(tabsetPanel, thetabs)
})
observe({
lapply(seq_len(ncol(df1)), function(x) {
output[[paste0("table_", x)]] <- renderTable({ df1[x] })
})
})
}
shinyApp(ui = ui, server = server)
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/455299.html
