2014-09-30 61 views
-1

如果变量名称存储在列表中,如何从特定环境中删除所有变量?R:删除存储在列表中的所有变量

我有例如:

a<-"1" 
b<-"2" 
MyList<-list(a,b) 
rm(MyList) 

MYLIST被移除,但是不a和b,其欲被移除(以及)。

+1

'RM(MYLIST,A,B)' – 2014-09-30 08:07:11

+0

,但我不想提a和b,因为我希望保持它的变量。我想说删除MyList和MyList中的所有变量名都需要删除 – MichiZH 2014-09-30 12:36:15

回答

2

简短的回答是你不能。

当您创建

NewThing <- list(oldThing1, oldThing2) 

NewThing是它自己的,新的东西。它唯一的关系是oldThing1 and 2是价值。


现在,如果不是你有

NewThing <- list(oldThing1 = oldThing1, oldThing2 = oldThing2) 

那么你可以使用

rm(list=names(NewThing)) 

但这再次,无关与NewThingoldThing之间的关系。简单地说,NewThing的名字恰好是你想要删除的。

如果使用

NewThing <- list(oldThing1 = "Hello", oldThing2 = "There Dr Seuss") 
.. 
rm (list=names(NewThing)) 
0

在另一方面它的工作一样的,你可以你使用withwithin创建MyList之后,从全球环境取出可变因素ab。这使MyList但删除ab

> a <- "1" 
> b <- "2" 
> MyList <- list(a, b) 
> with(MyList, rm(a, b, inherits = TRUE)) 
> a 
Error: object 'a' not found 
> b 
Error: object 'b' not found 

所以ab已被删除作为全局环境变量,但MyList遗体。要删除所有你需要做的rm(MyList, a, b)

> MyList 
[[1]] 
[1] "1" 

[[2]] 
[1] "2"