【发布时间】:2015-11-25 11:33:52
【问题描述】:
我的代码看起来像
observe ({
#subset someDataframe which I need in the observeEvent()
observeEvent(input$Numbers{
#if not NULL, do something with subsetted dataframe
})
})
我有一个observe() 函数,它从ui.R 获取输入。根据输入,我对将显示在应用程序中的数据框进行子集化。
需要进一步的子集,但该字段可以为空。如果选择为空(因此,NULL),要避免Unhandled Error,请使用observeEvent() 函数。如果该字段为空,则不会引发错误。
虽然有一些奇怪的行为。我打印出observeEvent() 观察到的(在我的 R 控制台中)选择的内容。当我选择observeEvent() 函数观察到的某些内容时,所选内容会打印一次。当我更改简单的observe() 观察到的选择,然后更改observeEvent() 观察到的选择中的某些内容时,它会打印两次。当我更改observe() 函数观察到的选择,然后更改来自observeEvent() 的选择时,它会被打印三次 - 依此类推。
因此,根据我更改observed() 函数观察到的选择的频率,observeEvent() 会经常执行。
这是为什么?!
【问题讨论】:
-
这是我第一次看到嵌套的
observe语句,我相信你可以改用reactive表达式。 -
@PorkChop 嵌套的
reactive?或者你会在哪里使用它? -
subset <- reactive({# Do your sub-setting here if(!is.null(input$Numbers)){Do something else} })我想你有一些来自ui.r的输入触发器,它们会做你可以带入reactive表达式的初始子设置
标签: r reactive-programming shiny-server shiny