在R中使用用户定义的void函数清除工作区

在R中使用用户定义的void函数清除工作区,r,function,workspace,R,Function,Workspace,我想用一个简单的函数来清除R中的工作区,但我似乎遇到了一些问题。我的代码在下面 clear() = function() rm(list=ls()) 当我定义这个函数并简单地使用clear()调用它时,代码会执行,但我的工作区不会被清除。我尝试了各种定义函数的格式,看看是否有什么奇怪的事情发生,但结果都是一样的。只需使用rm(list=ls())函数就可以了,但当我将它嵌入到函数中时就不行了。谁能给我指出正确的方向吗?对于用户定义的R函数,我还不了解什么 谢谢 问题在于,当您在函数中调用ls(

我想用一个简单的函数来清除R中的工作区,但我似乎遇到了一些问题。我的代码在下面

clear() = function() rm(list=ls())
当我定义这个函数并简单地使用
clear()
调用它时,代码会执行,但我的工作区不会被清除。我尝试了各种定义函数的格式,看看是否有什么奇怪的事情发生,但结果都是一样的。只需使用
rm(list=ls())
函数就可以了,但当我将它嵌入到函数中时就不行了。谁能给我指出正确的方向吗?对于用户定义的R函数,我还不了解什么


谢谢

问题在于,当您在函数中调用
ls()
时,默认情况下它会返回该函数环境中的对象。与
rm()
相同

试试这个:

clear <- function() {
  rm(list=ls(.GlobalEnv), envir=.GlobalEnv)
}

清晰,太棒了!这很有道理。谢谢你的解释!