【问题标题】:Function to remove all variables删除所有变量的功能
【发布时间】:2015-04-20 20:42:18
【问题描述】:

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

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

以下代码表明它不起作用:

( x<-ts( 1:100 ,frequency=12 ) )
clVar()
ls()

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

【问题讨论】:

    标签: r


    【解决方案1】:

    您需要将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
        )
    }
    

    【讨论】:

    • 我刚刚想通了!不过谢谢!顺便说一句,我似乎无法在 5 分钟内将此回复标记为答案。奇怪为什么会有最少的时间。
    • @user36800 酷!时间限制的原因是here
    • 我从不知道确保堆栈交换的质量可以如此......经过深思熟虑。谢谢。
    猜你喜欢
    • 2019-01-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-02
    • 2011-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多