删除所有变量的功能

use*_*800 2 r

删除除函数之外的所有变量,我得到了删除所有变量而不删除函数的命令.我不想一直输入它,所以我试着把它变成〜/ .Rprofile中定义的函数.我是R的新手,但我浏览了环境框架方案,对它有一种不稳定的理解.以下尝试似乎没有擦除主环境中定义的时间序列对象(当我第一次启动R时命令行提示符):

# In ~/.Rprofile
clVar <- function()
{
    rm(
        list=setdiff( ls(all.names=TRUE), lsf.str(all.names=TRUE)),
        envir=parent.frame()
    )
}
Run Code Online (Sandbox Code Playgroud)

以下代码显示它不起作用:

( x<-ts( 1:100 ,frequency=12 ) )
clVar()
ls()
Run Code Online (Sandbox Code Playgroud)

感谢您在修复环境框架方面提供的任何帮助.

Dav*_*son 9

你需要将parent.frame()环境传递给ls,而不仅仅是rm.否则ls将无法找到要删除的变量.

clVar <- function()
{
    env <- parent.frame()
    rm(
        list = setdiff( ls(all.names=TRUE, env = env), lsf.str(all.names=TRUE, env = env)),
        envir = env
    )
}
Run Code Online (Sandbox Code Playgroud)

  • 我从来不知道确保堆栈交换的质量可以如此......经过深思熟虑.谢谢. (2认同)