首页 > 解决方案 > 在删除对象期间,将用户定义的函数保留在全局环境中

问题描述

问:如何控制自定义函数的删除(和保存)?

到目前为止我已经尝试过:

有人建议我在每个函数的开头添加一个点 [.],并被告知不会删除这些函数。测试时,尽管盯着点,但该功能被删除。

要求:

预期结果:

下面是示例代码:

# Create 3 object variables.
a <- 1
b <- 2
c <- 3

# Create 3 functions.
myFunction1 <- function() {}
myFunction2 <- function() {}
myFunction3 <- function() {}

# Remove all from global.env.
# Keep the ones specified below.
rm(list = ls()[! ls() %in% c(
  "a",
  "c"
)
]
)

标签: r

解决方案


您可以使用ls.str指定mode的对象来查找。rm有了这个,您可以从列表中排除功能。

rm(list=setdiff(ls(),ls.str(mode="function")))
ls()
[1] "myFunction1" "myFunction2" "myFunction3"

但是,您最好将函数形式化在一个包中,这样您就不必担心使用rm.


推荐阅读