我正嘗試使用我的同事創建的一些函數創建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