【发布时间】:2015-09-28 10:58:06
【问题描述】:
我正在尝试在observeEvent() 中执行一个函数
我有
- 两个预定义函数:
calculate_value()和create_my_plot() - 一个输入存储为反应变量:
myreactive() - 从文件中读取一个数据集
a。根据输入值选择文件。 -
a用calculate_value()处理并传递给create_my_plot()
它是这样的:
myreactive<-reactive({input$myinput})
observeEvent(input$clicks,
{
filename<-paste(myreactive(),".csv")
a<-read.csv(filename)
x<-calculate_value(a,b=myreactive())
output$myplot<-renderPlot(
create_my_plot(x,myreactive())
})
每当我单击操作按钮时,都会激活此事件并绘制新的绘图。但是,每当 myreactive() 更改时,此图也会重新绘制。这很好。但是重新绘制的情节有一个问题:它仍然使用“旧”版本的“x”
每当 myreactive() 更改时,我都需要重新计算函数 calculate_value()。它不会发生
我已经试过了
x<-reactive({ calculate_value(a,b=myreactive()) })
然后什么都没有发生。即该函数根本不执行,x 保留为空。 对我来说这是不可接受的,因为“myreactive()”正在改变数据集和绘图的描述,如果绘图没有相应地重新绘制,那就完全错误了。
如果 myreactive() 发生变化,完全删除绘图就足够了,但我实际上想知道发生了什么以及为什么我不能让 calculate_value() 每次都重新计算而 create_my_plot() 可以做它。
【问题讨论】:
-
您能否将您的应用代码上传到gist(或将其附在您的问题末尾)?可以检查您的所有代码并可能尝试运行
runGist(key)的应用程序。