如何保存未被rm删除的变量(list = ls())

时间:2011-05-04 02:27:11

标签: r environment-variables

我想在R中保存一个不会被rm(list=ls())

删除的变量

我认为有可能因为安装的功能和包中的数据没有被删除。

编辑:一种可能是为此R会话设置一个env变量。我尝试过Sys.setenv(ENV_VAR = 1),但Sys.getenv(ENV_VAR)会返回错误。

(我在Windows 32bits,R 2.12.1上)

3 个答案:

答案 0 :(得分:6)

首先,要获取环境变量,您需要在其周围加上引号:

Sys.setenv(ENV_VAR = 1)
Sys.getenv("ENV_VAR")

其次,正如Chase所说,新的环境是可行的 - 但你必须附上它:

e <- new.env()
e$foo <- 42
attach(e, name='myvars')
rm(list=ls()) # Remove all in global env
foo # Still there!

......并将其分离:

detach('myvars')

答案 1 :(得分:4)

正确的答案是将变量放入新环境中。一个快速而又肮脏的技巧是在变量前添加.,以便ls()不会拾取它。

> x <- 1:10
> x
 [1]  1  2  3  4  5  6  7  8  9 10
> .x <- x
> ls()
[1] "x"
> rm(list = ls())
> ls()
character(0)
> .x
 [1]  1  2  3  4  5  6  7  8  9 10

答案 2 :(得分:2)

另一种选择如下:

# make busy workspace
x<-1
y<-2
z<-3

> ls()
[1] "x" "y" "z"

# determine what to keep
save<-"x"
#discard the rest
rm(list=ls()[!(ls()%in%save)])

> ls()
[1] "x"