2017-10-28 7 views
1

ShinyとShinyのダッシュボードでもっと経験を積んでいます。R Flexdashboard:他のコンポーネントからfileInputを介してアップロードされたデータを呼び出す

ggplotly exampleを複製したいと思いますが、file upload機能をShinyと組み合わせたいとします。つまり、9つのflexdashboardコンポーネント(データアップロード用、ggplotly用の4 + 4)があります。コンポーネント#1でファイルのアップロードを設定した場合、私はそれを反応的に呼び出すことができるようです。 (上のファイルアップロードの例から)

server <- function(input, output) { 

output$contents <- renderTable({ 

req(input$file1) 

df <- read.csv(input$file1$datapath, 
     header = input$header, 
     sep = input$sep, 
     quote = input$quote) 

return(head(df)) 

}) 

} 

これは、RMarkdownの独自のコンポーネント/コードチャンク内で動作します。ユーザーが.csvファイルをアップロードすると、最初の5行が表示されます。

しかし、アップロードされたデータは、他のコンポーネントから呼び出すことができません。それは、独自のコンポーネントにShinyモジュールとして組み込まれているからです。アップロードされたデータをオブジェクトに割り当ててから反応的に呼び出すことを試みました(たとえばselectedData())が、コンポーネントをグレーアウトします。また、observeEventを無効に設定してみました。私は明らかな何かを見逃すはずです。 ggplotlyの例では、データはグローバルなチャンクに保存されます。これは私のニーズに役立ちますが、パッケージ/ライブラリからデータを取得するだけで動作するようです。

tl; dr他のflexdashboardコンポーネントからユーザーがアップロードしたデータを呼び出すには、どのような方法が最適ですか?

答えて

0

これを行う1つの方法は、サイドバーを使用することです(ただし、同じコードを使用することはできません)。ファイルオプションを反映するようにfileInputを変更します。

これを試してみてください:

# File Upload {.sidebar} 

```{r, echo = FALSE} 
fileInput("file1", "Choose CSV File", 
       multiple = TRUE, 
       accept = c("text/csv", 
         "text/comma-separated-values,text/plain", 
         ".csv")) 
``` 

はランタイムを追加することを忘れないでください:YAMLヘッダ

に光沢のあります
関連する問題