gpt4 book ai didi

R Shiny 隔离 react 数据.frame

转载 作者:行者123 更新时间:2023-12-01 23:14:52 25 4
gpt4 key购买 nike

我正在努力理解如何在 R Shiny 中使用 isolate()reactive()

我想实现以下目标:

每当单击“刷新”操作按钮时:

  • 在 data.frame 上执行子集,并且

  • 将其输入到我的函数中以重新计算值。

该子集取决于用户选中的一组复选框,其中大约有 40 个。我无法让这些复选框“完全响应”,因为该函数需要大约 1.5 秒才能执行。相反,我想让用户有机会选择多个框,然后单击按钮来 (a) 子集和 (b) 再次调用该函数。

为此,我在 server.R 函数中加载 data.frame:

df1 <- readRDS("D:/././df1.RData")

然后我有我的主要 Shiny 服务器功能:

shinyServer(function(input, output) {

data_output <- reactive({
df1 <- df1[,df1$Students %in% input$students_selected]

#Here I want to isolate the "students_selected" so that this is only
#executed once the button is clicked
})

output$SAT <- renderTable({
myFunction(df1)
})
}

最佳答案

像这样的东西怎么样

data_output <- eventReactive(input$button, {
df1[,df1$Students %in% input$students_selected]
})

这是我的最小示例。

library(shiny)
ui <- list(sliderInput("num", "rowUpto", min= 1, max = 10, value = 5),
actionButton("btn", "update"),
tableOutput("tbl"))
server <- function(input, output) {
data_output <- eventReactive(input$btn, {
data.frame(id = 1:10, x = 11:20)[seq(input$num), ]
})

output$tbl <- renderTable({
data_output()})
}

runApp(list(ui = ui, server = server))

编辑

另一个实现,更简洁一些。默认情况下,renderTable 检查函数内所有反应元素的更改(在本例中为 input$numinput$button)。但是,您希望它仅对按钮使用react。因此,您需要将要忽略的元素放入 isolate 函数中。如果省略 isolate 函数,则一旦移动 slider ,表格就会更新。

library(shiny)
ui <- list(sliderInput("num", "rowUpto", min= 1, max = 10, value = 5),
actionButton("btn", "update"),
tableOutput("tbl"))
server <- function(input, output) {
output$tbl <- renderTable({
input$btn
data.frame(id = 1:10, x = 11:20)[seq(isolate(input$num)), ]
})
}

runApp(list(ui = ui, server = server))

关于R Shiny 隔离 react 数据.frame,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34396403/

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