我正尝试使用我的同事创建的一些函数创建Shiny应用程序。他经常在他的函数中使用'< <'运算符来创建全局对象。何时使用反应表达式vs使用<< - 创建全局对象
问题: 1.在这种情况下使用< <是否是一个好习惯? 2.如果我使用reactive()来表示对象,该应用会更快吗? 3.有什么更好的建议?
这是他写的函数的例子:
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)
}
为什么你的同事这样做?它使得重用功能非常困难。你真的只关心“更快”吗?而不是“正确”?一个更完整的[可重现的例子](https://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example)。 – MrFlick
'reactive()'和'<< - '做了两件完全不同的事情。 'reactive()'允许一个东西(例如数据框)对用户输入做出反应。如你所说的,<< << - 分配全局对象。它们并非真正可以互换。另外,我不明白你的同事为什么这样做。 –
感谢您的输入。该应用程序运行速度慢,所以我不知道他是否使用“解释缓慢。看起来更好的做法是重写函数(避免使用<<)而不是使用reactive()。任何其他建议,欢迎和赞赏。 – Ketty