我想除了他们两个从我目前的环境中删除所有的对象,像这样如何操作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