【发布时间】:2018-02-07 09:13:52
【问题描述】:
我正在尝试使用我同事创建的一些功能创建一个闪亮的应用程序。他经常在他的函数中使用“
问题: 1. 在这种情况下使用
这是他写的函数的一个例子:
PrepareData<-function(pickoneperday=TRUE,data) {
set.seed(1)
if (pickoneperday==TRUE) {data <<- PickOnePerDay(data)}
data <<- RankData(data)
SetMeasureType()
minnodebase <<- 0.005*nrow(data)
CodeMissingData(data)
}
【问题讨论】:
-
你的同事为什么要这样做?这使得重用函数变得非常困难。你真的只关心这里的“更快”吗?而不是“正确的”?更完整的reproducible example。
-
reactive()和<<-做了两件非常不同的事情。reactive()允许事物(例如数据框)对用户输入做出反应。<<-正如你所说的分配全局对象。它们并不是真正可以互换的。另外,我真的不明白你的同事为什么这样做。 -
感谢您的意见。该应用程序运行速度非常慢,所以我想知道他是否使用
-
同意其他评论者 - 你不应该采纳你同事的做法。如果您需要从函数返回对象,正确的方法是使用
return(data)。否则,您只是在寻找令人困惑的错误。 -
“使用
<<-...”:否。您还可以通过让它们相互依赖来在事件之后更新多个反应值,这样每个值都可以在服务器循环中直接分配。
标签: r shiny shiny-reactivity