我试图清除我的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中的提示,但他们不适合我。
知道为什么会这样吗?谢谢!
答案 0 :(得分:8)
您所看到的是ls
功能的源代码。当您输入不带括号的函数名时,您将看到该函数的完整源代码(前提是该函数位于附加到搜索路径的一个软件包中,或者位于全局环境中)。
当您看到character(0)
作为调用ls()
的结果时,这意味着全局环境中没有对象。 ls
调用home的基本包与全局环境不同,并且无法删除那里的对象。
在您致电character(0)
后ls()
的结果为rm(list=ls())
后,您已成功清除全球环境中的对象。