2012-07-24 6 views
48

के साथ कई ऑब्जेक्ट्स निकालें मेरी मेमोरी इंटरमीडिएट फाइलों के समूह द्वारा छिपी जा रही है (उन्हें temp1, temp2, आदि) कहें। rm(temp1), rm(temp2) एक बार में बिना किसी स्मृति के उन्हें स्मृति से निकालना संभव है? मैंने rm(list(temp1, temp2, etc.)) की कोशिश की, लेकिन ऐसा लगता है कि यह काम नहीं कर रहा है।आरएम()

उत्तर

75

सूची एक चरित्र वेक्टर (नहीं नामों में से एक सदिश) सुनिश्चित

rm(list = c('temp1','temp2')) 

या

rm(temp1, temp2) 
+3

स्मृति में सब कुछ निकालने के लिए अस्थायी चर की संख्या हो सकती है, आप कह सकते हैं: आर एम (सूची = ls()) – Sam

+2

@Sam 'आर एम (सूची = ls (सभी = सही)) 'अगर आप सब कुछ प्राप्त करना सुनिश्चित करना चाहते हैं। – Dason

2

या नियमित अभिव्यक्ति

"rmlike" <- function(...) { 
    names <- sapply(
    match.call(expand.dots = FALSE)$..., as.character) 
    names = paste(names,collapse="|") 
    Vars <- ls(1) 
    r <- Vars[grep(paste("^(",names,").*",sep=""),Vars)] 
    rm(list=r,pos=1) 
} 

rmlike(temp) 
72

एक अन्य समाधान rm(list=ls(pattern="temp")) का उपयोग कर, सभी को हटा दें पैटर्न से मेल खाने वाली वस्तुओं।

+0

जोश पॉलसन द्वारा वर्णित [यहां] (https://support.rstudio.com/hc/en-us/articles/200711843- वर्किंग- निर्देशिकाएं- और- वर्कस्पेस) (मुझे नहीं पता था कि 'ls (...) 'किया, लेकिन अब मुझे लगता है कि यह यूनिक्स बैश फ़ंक्शन ls की तरह है?) - व्हाउप्स, जोश पॉलसन ने स्मृति में सब कुछ हटाने के लिए @ सैम द्वारा वर्णित एक विशिष्ट विविधता का उपयोग किया, आप कह सकते हैं: rm (list = ls()) ' –

+0

यह ठीक काम करता है लेकिन एक छोटी सी बग हो सकती है। अगर 'एबीसीटीएमपी' नाम वाला ऑब्जेक्ट है, तो इसे भी हटा दिया जाएगा। मैं उन वस्तुओं को कैसे हटा सकता हूं जो 'temp' से शुरू होते हैं और 'एबीसीटीम्पी' रखते हैं? – user3768495

+4

आप बस अपने पैटर्न में और अधिक मानदंड जोड़ सकते हैं। आपके उदाहरण के लिए, 'pattern = "^ temp" 'केवल" temp "द्वारा प्रारंभिक चर पकड़ लेगा, इसलिए चर' ABCtemp 'नहीं है। – Alan

-1

ls() सभी चर सूचीबद्ध करेगा। इसलिए यदि आप rm(list=ls()) आज़माते हैं, तो यह सभी चर साफ़ करेगा।

+4

यह नहीं है प्रश्न, और स्वीकृत उत्तर के तहत टिप्पणियां देखें। – Tensibai

1

एक और बदलाव जो आप कोशिश कर सकते हैं (@ mnel के उत्तर का विस्तार करना) यदि आपके पास कई temp'x 'हैं।

यहाँ

"n" वर्तमान

rm(list = c(paste("temp",c(1:n),sep=""))) 
संबंधित मुद्दे