如何操作R中函数内的全局环境?

时间:2012-10-30 19:40:35

标签: r

我想删除当前环境中的所有对象,除了其中两个,类似这样的

rm(list=setdiff(ls(),c("current_object_a","current_object_b")))

但我想在一个函数中调用它。如果我现在这样做,没有任何反应,因为我正在删除函数内部的环境变量,而不是全局环境。

2 个答案:

答案 0 :(得分:9)

您必须为lsrm指定环境。

rm(list = setdiff(ls(globalenv()),
                  c("current_object_a", "current_object_b")),
   pos = globalenv())

但是,真的,你为什么要这样做?从函数中删除全局环境中的东西似乎是一件坏事。

答案 1 :(得分:6)

您可以使用posenvir参数

指定环境
rm(list=setdiff(ls(pos=globalenv()),
                c("current_object_a","current_object_b")), 
   pos=globalenv())

来自?rm

  

'pos'参数可以指定环境        以下列任何一种方式删除对象:作为整数(        在“搜索”列表中的位置);作为的字符串名称        搜索列表中的元素;或作为“环境”(包括        使用'sys.frame'访问当前活动的函数调用)。        'envir'参数是另一种指定方法        环境,但主要是为了兼容背面。