我想保存中的R的變量,即不會因rm(list=ls())
如何保存不通過RM除去變量(列表= LS())
去除我認爲這是可能的,例如安裝的功能並且包中的數據不會被刪除。
編輯:一種可能性是爲此R會話設置一個env變量。我試過Sys.setenv(ENV_VAR = 1)
,但是Sys.getenv(ENV_VAR)
返回一個錯誤。
(我是在Windows 32位,R 2.12.1)
我想保存中的R的變量,即不會因rm(list=ls())
如何保存不通過RM除去變量(列表= LS())
去除我認爲這是可能的,例如安裝的功能並且包中的數據不會被刪除。
編輯:一種可能性是爲此R會話設置一個env變量。我試過Sys.setenv(ENV_VAR = 1)
,但是Sys.getenv(ENV_VAR)
返回一個錯誤。
(我是在Windows 32位,R 2.12.1)
首先,以獲得環境變量,你需要把它周圍的報價:
Sys.setenv(ENV_VAR = 1)
Sys.getenv("ENV_VAR")
其次,大通表示,新的環境是要走的路 - 但你也必須重視它:
e <- new.env()
e$foo <- 42
attach(e, name='myvars')
rm(list=ls()) # Remove all in global env
foo # Still there!
...並且將其卸下:
detach('myvars')
正確答案涉及把你變到一個新的環境。一個快速而骯髒的訣竅是在變量前加上.
,以便它不會被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
不錯的招數!!!!! – RockScience 2011-05-04 06:12:19
另一種選擇如下:
# 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"
好主意,但我沒有控制該命令。它正在做rm(list = ls()),就是這樣 – RockScience 2011-05-05 01:07:32
大部分同意,但我不相信使用'attach'。改爲用''來代替。 http://4dpiecharts.com/2011/04/29/friday-function-triple-bill-with-vs-within-vs-transform/ – 2011-05-04 07:31:05