2016-11-16 9 views
2

Есть ли у кого-нибудь представление о том, как я могу удалить все в R за исключением одного объекта? Обычно, чтобы удалить все, что я код:rm() все, кроме определенного объекта

rm(list=ls()) 

Так что я пытался:

rm(c(list=ls()-my_object)) 

но это не сработало.

+5

'гт (список = setdiff (Ls(), "my_object"))' – SymbolixAU

+0

@SymbolixAU: пост что в качестве ответа – smci

+1

вы также можете сделать 'rm (list = ls() [! ls()% в% 'myobject'])'. –

ответ

4

Функция setdiff() показывает разницу между наборами, поэтому мы можем использовать это, чтобы дать разницу между всеми объектами (ls()) и объектом, который вы хотите сохранить. Например,

## create some objects 
df <- data.frame() 
v <- as.numeric() 

# show everything in environment 
objects() 
# [1] "df" "v" 

## or similarly 
ls() 
# [1] "df" "v" 

## the setdiff() funciton shows the difference between two sets 
setdiff(ls(), "df") 
# [1] "v" 

# so we can use this to remove everything except 'df' 
rm(list = setdiff(ls(), "df")) 
objects() 
# [1] "df" 
+0

Я, кажется, недавно привлекаю много голосов, похоже, у меня есть поклонник – SymbolixAU

0

Несмотря на то, что это было задано давно. Мой ответ может помочь другим в будущем, Предположим, вы хотите, чтобы удалить все из вашей среды, кроме obj1 и obj2

x<- which(ls()=="obj1"|ls()=="obj2") 
ls1<- ls()[-x] 
rm(list = ls1) 

 Смежные вопросы

  • Нет связанных вопросов^_^