मैं R में कार्यक्षेत्र से सभी वस्तुओं को कैसे हटा सकता हूं?


220

मेरे पास बहुत सी वस्तुओं के साथ एक कार्यक्षेत्र है और मैं सभी को हटाना चाहूंगा लेकिन एक। आदर्श रूप में मैं टाइप करने से बचना चाहूंगा rm(obj.1, obj.2... obj.n)। क्या यह संकेत करना संभव है remove all objects but these ones?

जवाबों:


374

यहाँ एक सरल निर्माण है जो इसे करेगा, का उपयोग करके setdiff:

rm(list=setdiff(ls(), "x"))

और एक पूर्ण उदाहरण। इसे अपने जोखिम पर चलाएं - यह छोड़कर सभी चर को हटा देगा x:

x <- 1
y <- 2
z <- 3
ls()
[1] "x" "y" "z"

rm(list=setdiff(ls(), "x"))

ls()
[1] "x"

8
यहां इस्तेमाल की जाने वाली तकनीक का उपयोग सूची = आरएम करने के लिए किया जाता है, जो एक चरित्र वेक्टर को नामों की सूची के बजाय आरएम को पारित करने की अनुमति देता है।
अंतरिक्ष यात्री

53

पैकेज keepसे फ़ंक्शन का उपयोग करना gdataकाफी सुविधाजनक है।

> ls()
[1] "a" "b" "c"

library(gdata)
> keep(a) #shows you which variables will be removed
[1] "b" "c"
> keep(a, sure = TRUE) # setting sure to TRUE removes variables b and c
> ls()
[1] "a"

मुझे लगता है कि gdata से "रखने" का उपयोग करने से अधिक समझ में आता है और यह याद रखना आसान है कि आधार आर में कॉमैंड की सभी जटिलताएं हैं
डेरियस

47

मुझे लगता है कि एक और विकल्प RStudio में कार्यक्षेत्र खोलना है और फिर सूची को पर्यावरण के शीर्ष दाईं ओर ग्रिड में बदलना है (नीचे छवि)। फिर उन वस्तुओं पर टिक करें जिन्हें आप साफ़ करना चाहते हैं और अंत में स्पष्ट पर क्लिक करें।

यहां छवि विवरण दर्ज करें


3
इसी तरह, नाम बॉक्स पर क्लिक करें, जो सभी फाइलों का चयन करता है, और फिर उन सभी फाइलों को रद्द कर दें जिन्हें आप रखना चाहते हैं।
स्टीफन

27

मैंने बस इसी तरह के लेकिन थोड़े अलग सवाल के जवाब के लिए कई घंटे शिकार करने में बिताए - मुझे एक मुट्ठी भर वैक्टरों को छोड़कर आर (कार्यों सहित) में सभी वस्तुओं को हटाने में सक्षम होना चाहिए।

ऐसा करने का एक तरीका:

rm(list=ls()[! ls() %in% c("a","c")])

जहां मैं जिन वैक्टर को रखना चाहता हूं, उन्हें 'ए' और 'सी' नाम दिया गया है।

उम्मीद है कि यह किसी को भी एक ही समाधान के लिए खोज करने में मदद करता है!


11
यह भी काम करना चाहिए rm(list=setdiff(ls(), c("a", "c"))), है ना? देखिए @ एंड्री का जवाब।
hplieninger



6

इस का लाभ लेता है ls()के patternविकल्प, के मामले में आप एक ही पैटर्न है कि आप रखने के लिए नहीं करना चाहते हैं के साथ वस्तुओं का एक बहुत कुछ है:

> foo1 <- "junk"; foo2 <- "rubbish"; foo3 <- "trash"; x <- "gold"  
> ls()
[1] "foo1" "foo2" "foo3" "x"   
> # Let's check first what we want to remove
> ls(pattern = "foo")
[1] "foo1" "foo2" "foo3"
> rm(list = ls(pattern = "foo"))
> ls()
[1] "x"

वाह, यह खतरनाक लगता है! क्या शेल में ला "इको" से मेल खाते पैटर्न का परीक्षण करने का एक तरीका है?
DQdlM

1
मुझे लगता है कि rmफ़ंक्शन को हमेशा देखभाल के साथ उपयोग किया जाना चाहिए (शेल में अधिक तो!)। अपने प्रश्न के उत्तर के लिए मेरा संपादन देखें।
पीटर डायकुमिस


3

चलो अलग तरीके से सोचते हैं, क्या होगा अगर हम एक समूह को हटाना चाहते हैं? इसे इस्तेमाल करे,

 rm(list=ls()[grep("xxx",ls())]) 

मुझे व्यक्तिगत रूप से बहुत सारे टेबल पसंद नहीं हैं, मेरी स्क्रीन पर चर, फिर भी मैं उनका उपयोग करने से बच नहीं सकता। इसलिए मैं "xxx" से शुरू होने वाली अस्थायी चीजों को नाम देता हूं, इसलिए मैं इसका उपयोग करने के बाद हटा सकता हूं।


2

एक फ़ंक्शन के भीतर, सभी ऑब्जेक्ट्स को छोड़कर .GlobalEnv फ़ंक्शन को छोड़कर

initialize <- function(country.name) {

  if (length(setdiff(ls(pos = .GlobalEnv), "initialize")) > 0) {
    rm(list=setdiff(ls(pos = .GlobalEnv), "initialize"), pos = .GlobalEnv)
  }

}

2

फ़ाइलों की एक सूची रखने के लिए , एक का उपयोग कर सकते हैं:

rm(list=setdiff(ls(), c("df1", "df2")))

1

इस बारे में कैसा है?

# Removes all objects except the specified & the function itself.

rme <- function(except=NULL){
  except = ifelse(is.character(except), except, deparse(substitute(except)))
  rm(list=setdiff(ls(envir=.GlobalEnv), c(except,"rme")), envir=.GlobalEnv)
}



-9

निम्नलिखित आपके कंसोल से सभी ऑब्जेक्ट को निकाल देगा

rm(list = ls())

4
सबसे पहले, यह वह नहीं है जो पूछा गया था। दूसरा, R के हर संभव तरीके के बारे में जो पिछले उत्तरों में शामिल किया गया है। नए उपयोगकर्ताओं के लिए नए प्रश्नों की मदद करने के लिए आपका बहुत-बहुत स्वागत है। यह एक 6 साल पहले ही हल हो गया था, और यह समाधान आज भी खड़ा है।
जोरिस मेय्स
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.