gpt4 book ai didi

r - 如何在 Shiny 的 react 表达式中使用以前的 react 值?

转载 作者:行者123 更新时间:2023-12-04 02:12:25 27 4
gpt4 key购买 nike

我的响应式(Reactive)表达式生成一个数值向量。有没有办法可以保存以前的渲染值并在下次重新使用它?我尝试创建一个额外的响应式(Reactive)表达式来保存值,然后在使用第一个响应式(Reactive)表达式时再次调用它,但这会导致以下错误:

Error in : evaluation nested too deeply: infinite recursion / options(expressions=)?

我无法上传我的整个示例,因为它是一项调查,属于 secret 信息。但是,我正在尝试深入了解我的 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 更新时,它应该将旧的/以前的值作为输入。我很抱歉弄得一团糟——我知道如果没有可重现的例子很难帮助我。但基本上,我只是想修复以前的 react 结果并在下次重新使用它。

最佳答案

有点晚了,但我认为这就是你想要的 - 这是一个很好的锻炼。它使用 react 变量 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)

图片:

enter image description here

关于r - 如何在 Shiny 的 react 表达式中使用以前的 react 值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37116347/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com