我對Shiny和Shiny儀表板有更多的經驗,所以也許這就是爲什麼我遇到問題。我可以用下面的假設來近似MWE:R Flexdashboard:通過來自其他組件的fileInput調用上傳的數據
假設我想複製ggplotly example,但我想將它與file upload功能與Shiny結合使用。這意味着,我將有九個FlexDashboard組件(一個用於數據上傳,4 + 4用於ggplotly數據)。如果我在組件#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文件,它將顯示前五行。
但是,我無法從任何其他組件中調用上傳的數據,因爲它作爲Shiny模塊嵌入到它自己的組件中。我試着將上傳的數據分配給一個對象,然後被動地調用它(例如selectedData()
),但是將組件灰化。也嘗試設置observeEvent
無濟於事。我覺得我必須失去一些明顯的東西。在ggplotly示例中,數據保存在全局塊中 - 這將滿足我的需求,但似乎只適用於從包/庫中獲取數據。
tl; dr從其他flexdashboard組件調用用戶上傳數據的最佳方式是什麼?