从删除除函数之外的所有变量,我得到了删除所有变量而不删除函数的命令.我不想一直输入它,所以我试着把它变成〜/ .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)
感谢您在修复环境框架方面提供的任何帮助.
你需要将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)
| 归档时间: |
|
| 查看次数: |
819 次 |
| 最近记录: |