我想从当前环境中删除所有对象,除了其中两个,像这样
rm(list=setdiff(ls(),c("current_object_a","current_object_b")))
但我想在一个函数中调用它。如果我现在这样做,什么也不会发生,因为我正在删除函数内部的环境变量,而不是全局环境。
我想从当前环境中删除所有对象,除了其中两个,像这样
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
orenvir
参数指定环境
rm(list=setdiff(ls(pos=globalenv()),
c("current_object_a","current_object_b")),
pos=globalenv())
从?rm
'pos' 参数可以通过以下几种方式指定要从中删除对象的环境: 作为整数(在 'search' 列表中的位置);作为搜索列表中元素的字符串名称;或作为“环境”(包括使用“sys.frame”访问当前活动的函数调用)。'envir' 参数是指定环境的另一种方法,但主要是为了向后兼容。