![](/img/trans.png)
[英]How can I concatenate non-reactive values with reactive value for a graph title? R Shiny
[英]How can I use a previous reactive value in a reactive expression in shiny?
我的反應式表達式產生一個數值向量。 有沒有一種方法可以保存以前的渲染值並在下次再次使用? 我試圖創建一個附加的反應性表達式來保存值,然后在使用第一個反應性表達式時再次調用它,但這會導致以下錯誤:
Error in : evaluation nested too deeply: infinite recursion / options(expressions=)?
由於調查是保密的,因此我無法上傳整個示例。 但是,我試圖深入了解我的server.R文件。
yvals <- reactive({...})
xvals <- c(...) #some default values to start with
xvals <- reactive({
dat <- data.frame(xvals(), yvals())
....
print(xvals)
})
問題是yvals基於ui.R的輸入。 但是,xvals不是(至少不是直接)。 因此,當xvals更新時,應將舊值/先前值作為輸入。 我為那一團糟感到抱歉-我知道沒有可復制的示例很難幫助我。 但基本上,我只想修復先前的反應結果,然后在下一次重新使用它。
有點晚了,但是我想這就是您想要的-這是一個很好的選擇。 它使用反應變量memory
來跟蹤從一個迭代到下一個迭代。 請注意, isolate
表達式可避免遞歸錯誤。
library(shiny)
ui <- fluidPage(
h1("Reactive Memory"),
sidebarLayout(
sidebarPanel(
numericInput("val","Next Value",10)
),
mainPanel(
verbatimTextOutput("prtxval")
)
))
server <- function(input,output,session) {
nrowsin <- 6
ini_xvals <- 1:nrowsin
memory <- reactiveValues(dat = NULL)
yvals <- reactive({ rep(input$val,nrowsin) })
xvals <- reactive({
isolate(dat <- memory$dat)
if (is.null(dat)) {
memory$dat <- data.frame(xvals = ini_xvals,yvals())
} else {
memory$dat <- data.frame(dat,yvals())
}
return(memory$dat)
})
output$prtxval <- renderPrint({ xvals() })
}
shinyApp(ui,server)
圖片:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.