分配 global/reactive 个变量

Assigning global/reactive variables

我是 Shiny 的新手,因此可能很难理解如何将普通 R 代码转换为可用的 Shiny 代码。

我想使用我已经用 R 编写的代码,它转换 CSV 文件并创建几个不同的数据帧并将它们写入输出。我使用 Shiny 的原因是为了让用户更容易使用和更改输入变量。

我有例如以下代码:

X <- Y %>% filter(grepl("FALSE", ignore.case=T, ZZ)==F | is.na(ZY), KKL!="PLO")
X.Y <- X %>% filter(grepl("ZZZ", ignore.case = T, PLOP==T)
X.YY <- X%>% filter(grepl("ZIZ", ignore.case = T, PLK)==T)

我尝试通过应用由用户上传相关 CSV 文件触发的 observeEvent 来创建这些变量,但是,我发现 observeEvent 创建并存储本地值,这不会当我希望将数据帧写入输出时执行此操作。这是否意味着我必须为上述每个命令创建一个单独的反应函数反应函数?或者有没有办法像标准 R 中那样全局分配这些变量?

提前致谢!

您需要为每个分配创建一个反应函数:

X <- reactive( Y() %>% filter(grepl("FALSE", ignore.case=T, ZZ)==F | is.na(ZY), KKL!="PLO") )
X.Y <- reactive( X() %>% filter(grepl("ZZZ", ignore.case = T, PLOP==T) )
X.YY <- reactive( X() %>% filter(grepl("ZIZ", ignore.case = T, PLK)==T) )

X.YX.YY 取决于 X,并且会在 X 上更改后自动更新。
Y也应该是反应式的,例如:

  Y <- eventReactive(input$loadCSVbutton, {
    readCSV("mydata.csv")
  })

请注意,由于 XY 现在是反应函数,因此它们的值为 X()Y()