删除除函数之外的所有变量

Roc*_*nce 108 caching r

我在R控制台中加载了不同类型的对象.我可以全部删除它们

rm(list=ls())
Run Code Online (Sandbox Code Playgroud)

或使用仅删除函数(但不删除变量)

rm(list=lsf.str())
Run Code Online (Sandbox Code Playgroud)

我的问题是:有没有办法删除除函数之外的所有变量

Jos*_*ien 131

这是一个删除函数以外的所有对象的单行程序:

rm(list = setdiff(ls(), lsf.str()))
Run Code Online (Sandbox Code Playgroud)

它用于setdiff查找ls()没有模式的全局环境中的对象子集(由返回者)function(返回者lsf.str())

  • 如果你还想删除名称以句点开头的对象,请改用:`rm(list = setdiff(ls(all.names = TRUE),lsf.str(all.names = TRUE))) (5认同)

Car*_*oft 7

贴出的setdiff答案很好.我只是觉得我发布了一段时间后我写的相关功能.它的用处取决于读者:-).

lstype<-function(type='closure'){ 
    inlist<-ls(.GlobalEnv)
    if (type=='function') type <-'closure'
    typelist<-sapply(sapply(inlist,get),typeof)
    return(names(typelist[typelist==type]))
}
Run Code Online (Sandbox Code Playgroud)