rm()似乎没有清空我的R工作区

时间:2015-01-20 00:40:59

标签: r rm

我试图清除我的R工作区。我在任何线程中找不到的任何东西似乎都有效 - 而且我现在一直在谷歌搜索和尝试解决方案:(

当我打开R并键入ls时,控制台会显示上一个会话中的所有代码:

function (name, pos = -1L, envir = as.environment(pos), all.names = FALSE, 
    pattern) 
{
    if (!missing(name)) {
        nameValue <- try(name, silent = TRUE)
        if (identical(class(nameValue), "try-error")) {
            name <- substitute(name)
            if (!is.character(name)) 
                name <- deparse(name)
            warning(gettextf("%s converted to character string", 
                sQuote(name)), domain = NA)
            pos <- name
        }
        else pos <- nameValue
    }
    all.names <- .Internal(ls(envir, all.names))
    if (!missing(pattern)) {
        if ((ll <- length(grep("[", pattern, fixed = TRUE))) && 
            ll != length(grep("]", pattern, fixed = TRUE))) {
            if (pattern == "[") {
                pattern <- "\\["
                warning("replaced regular expression pattern '[' by  '\\\\['")
            }
            else if (length(grep("[^\\\\]\\[<-", pattern))) {
                pattern <- sub("\\[<-", "\\\\\\[<-", pattern)
                warning("replaced '[<-' by '\\\\[<-' in regular expression pattern")
            }
        }
        grep(pattern, all.names, value = TRUE)
    }
    else all.names
}
<bytecode: 0x2974f38>
<environment: namespace:base>

如果我输入rm(list=ls())然后再次输入ls,我会得到完全相同的回复 - 即上一次会话中的代码未被删除。

顺便说一句,我在没有括号的情况下输入ls 。使用括号键入ls()会返回character(0)

我还尝试通过RStudio清除环境,甚至删除〜/ .Rdata文件。什么都不会清除这个工作区。每次重新启动R并输入ls时,所有旧代码仍然存在。

我已经尝试了this thread中的提示,但他们不适合我。

知道为什么会这样吗?谢谢!

1 个答案:

答案 0 :(得分:8)

您所看到的是ls功能的源代码。当您输入不带括号的函数名时,您将看到该函数的完整源代码(前提是该函数位于附加到搜索路径的一个软件包中,或者位于全局环境中)。

当您看到character(0)作为调用ls()的结果时,这意味着全局环境中没有对象。 ls调用home的基本包与全局环境不同,并且无法删除那里的对象。

在您致电character(0)ls()的结果为rm(list=ls())后,您已成功清除全球环境中的对象。