2017-03-01 9 views
0

私の現在の光沢のあるコードに問題があります。 与えられた関数の結果に応じて動的な数のタブを生成する必要があります(その部分は正常に動作します)。次に、これらのタブの入力を、例えばrenderTextの他のループで生成したいと思います。しかし、私の生成したrenderTextのtextOutputの最終出力は、常にループの最後のrenderTextの1つです。それはrenderText私はちょうど問題を回避することができる場所、私はプロットとテーブルの多くをレンダリングしようとするとcouldnのためにそれは重要ではないかもしれませんがR光沢のある動的なタブ番号と入力の生成

library(shiny) 
library(shinydashboard) 


ui <- pageWithSidebar(
     headerPanel("xxx"), 
     sidebarPanel(), 
     mainPanel(
      uiOutput("multipleUI") 
     ) 
    ) 


server <- function(input, output) { 
     output$multipleUI <- renderUI({ 
     tabs <- list(NULL) 
     for(i in 1:5){ 
      tabs[[i]] <- tabPanel(title = paste0("tab ",i), 
         textOutput(paste0("out",i)), # prints j as 5 in all tabs 
         paste0("local out ",i)) # prints i as current loop value for each tab) 
    } 
    do.call(tabBox,tabs) 
    }) 
    observe({ 
    for(j in 1:5){ 
     txt = paste0("generated out ", j) 
     print(txt) # print with current j 
     output[[paste0("out",j)]] <- renderText({txt}) 
    } 
    }) 
} 

shinyApp(ui, server) 

:ここ

は、アイデアの小さな一例ですそこの回避策を考えないでください。

私は助けていただきありがとうございます!

編集:私は小さな作業例

+1

「ui.R」と「server.R」、または「app.R」のコード全体を投稿して問題を可視化することはできますか? –

+0

はい、少なくとも 'tabBox'を知らなければなりません。 – BigDataScientist

+0

@ GauravBansal私は小さな作業例を示すようにコードを更新しました:) –

答えて

0

を表示するようにコードを更新しました。ここに動作するようです解決策です。私はlapplyを使ってタブを作成しています。あなたが必要とするもののために働くかどうか私に教えてください。

library(shiny) 

ui <- pageWithSidebar(
    headerPanel("xxx"), 
    sidebarPanel(), 
    mainPanel(
    do.call(tabsetPanel, c(id='tab',lapply(1:5, function(i) { 
     tabPanel(
     title=paste0('tab ', i), 
     textOutput(paste0('out',i)) 
    ) 
    }))) 
) 
) 

server <- function(input, output) {  
    lapply(1:5, function(j) { 
    output[[paste0('out',j)]] <- renderPrint({ 
     paste0('generated out ', j) 
    }) 
    }) 
} 

shinyApp(ui, server) 
+0

はい、それは完璧に動作します!ご助力ありがとうございます!万が一、これらの動作が異なる理由が分かりますか?私の例では、問題はRが怠け者であり、それを呼び出すときにjの値を設定し、この時点では値5を持つという事実と関係があることを理解しています。しかし、私はlapplyがどのように異なって動作するのか理解していません。 –

+0

残念ながら、私はあなたのコードがうまくいかなかった理由を理解することができませんでした。私は 'lapply'を使ってこのサイトをテンプレートとして使用しました:http://shiny.rstudio.com/gallery/creating-a- ui-from-a-loop.html –

+0

また、正式に私の答えを受け入れることをお勧めしますか?ありがとう。 –

関連する問題