[英]R Shiny: reactivevalues from function
我將幾個表存儲在.rds文件中,我想在Shiny會話中使用readRDS導入這些表。 因此,我定義了以下全局函數:
get.station <- function(sname){
file.name <- paste(sname".rds", sep="")
return(readRDS(file.name))
}
在服務器函數中,我定義了反應值:
st.reactive <- reactiveValues(get.station(input$station.sel))
其中input$station.sel
來自用戶界面,使用selectInput(...)
。 這將導致以下錯誤消息:
Operation not allowed without an active reactive context.
(You tried to do something that can only be done from inside
a reactive expression or observer.)
如果我使用reactive()
定義此函數,此錯誤消息甚至不會消失:
get.station <- reactive({
file.name <- paste(input$station.sel".rds", sep="")
return(readRDS(file.name))
})
在服務器內:
st.reactive <- reactiveValues(data=get.station())
你有什么幫助嗎?
您有正確的主意,只需將函數放入reactive
或observe_
函數中即可。 雖然您可以在初始調用中定義reactiveValues
,但最好的做法是將React值對象創建為空,然后使用<-
標記進行所有分配。
混淆來自於這樣一個事實,盡管它的名字叫reactiveValues
並不是一個反應式。 它生成一個反應性值對象,可以將反應性值存儲在其中,但是它只運行一次,並且不會檢查其值是否無效。
就您而言,我將執行以下操作:
rv <- reactiveValues()
rv$st.reactive <- observe({get.station(input$station.sel)})
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.