我想除了他們兩個從我目前的環境中刪除所有的對象,像這樣如何操作R中函數內的全局環境?
rm(list=setdiff(ls(),c("current_object_a","current_object_b")))
,但我想在函數中調用它。如果我現在這樣做,沒有任何反應,因爲我刪除了函數內部的環境變量,而不是全局環境。
我想除了他們兩個從我目前的環境中刪除所有的對象,像這樣如何操作R中函數內的全局環境?
rm(list=setdiff(ls(),c("current_object_a","current_object_b")))
,但我想在函數中調用它。如果我現在這樣做,沒有任何反應,因爲我刪除了函數內部的環境變量,而不是全局環境。
您必須指定環境ls
和rm
。
rm(list = setdiff(ls(globalenv()),
c("current_object_a", "current_object_b")),
pos = globalenv())
但是,真的,你爲什麼要這樣做?從一個函數中刪除全局環境中的東西看起來像是一件壞事。
可以與任一pos
或envir
參數
rm(list=setdiff(ls(pos=globalenv()),
c("current_object_a","current_object_b")),
pos=globalenv())
從?rm
的 'POS' 參數中指定的環境可以指定環境從中 刪除對象可以通過以下幾種方式之一:作爲整數(「搜索」列表中的 位置);作爲搜索列表中的 元素的字符串名稱;或作爲'環境'(包括使用'sys.frame'訪問當前活動函數調用的 )。 'envir'參數是指定 環境的替代方法,但主要是爲了後向兼容。
+1用於識別'ls'需要指定'globalenv()'還 – GSee
+1對於壞事 –
我在lib目錄中有一組R文件,我希望我的環境能夠反映lib 。如果我重命名一個函數,我想刪除舊名稱,所以我刪除了除rm函數和source_dir函數(加載lib目錄)之外的所有對象,然後再次加載它們,調用rf()(refresh)。有沒有更好的方法來做到這一點?如果(重置){rm(list = setdiff(ls(globalenv()),c(「source_dir」,「rf」,except)), pos = globalenv()) } source_dir(「my/path/to/lib /」) } – nachocab