我的全局環境中有一個名爲myList
的變量。我有一個功能,修改myList
並重新分配給稱爲myFunction
的全球環境。我只想要myList
被修改myFunction
。有沒有辦法阻止任何其他功能修改myList
?限制哪些功能可以修改對象
爲了背景,我正在爲R用戶構建一個通用工具。我不希望該工具的用戶能夠定義他們自己的功能來修改myList
。我也不想讓自己能夠修改myList
與我將來可能寫的函數。
我有一個潛在的解決方案,但我不喜歡它。執行該工具時,我可以檢查用戶定義的每個函數的文本,並搜索將爲全球環境分配myList
的文本。我不喜歡我需要搜索所有功能的事實。
有誰知道我在找什麼可以在R中實現?感謝您提供的任何幫助。
對於可重現的示例。我需要的代碼,這將使下面的例子可能:
assign('myList', list(), envir = globalenv())
myFunction <- function() {
myList <- c(myList, 'test')
assign('myList', myList, envir = globalenv())
}
userFunction <- function() {
myList <- c(myList, 'test')
assign('myList', myList, envir = globalenv())
}
myFunction() # I need some code that will allow this function to run successfully
userFunction() # and cause an error when this function runs
我不認爲應該如此限制 - 你應該看看S3類,也許最好的解決方案將是幾乎有你自己的數據結構和方法獨特的類。因爲你的數據不是由函數創建的,而是被修改的 - 初始輸入總是可以自由地做任何事情。 – zacdav