2012-07-24 2 views
48

私のメモリは、中間ファイルの束(temp1、temp2などと呼ぶ)によって詰まっています。 rm(temp1),rm(temp2)を一度に1つずつ実行せずにメモリからそれらを削除することはできますか?私はrm(list(temp1, temp2, etc.))を試しましたが、それはうまくいかないようです。rm()で複数のオブジェクトを削除する

答えて

75

すべてを削除し、文字ベクトル(名前のないベクトル)

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

または

rm(temp1, temp2) 
+3

可能性があります。rm(リスト= LS()) – Sam

+2

@Sam 'RM(リスト= 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

Josh Paulsonの[here](https://support.rstudio.com/hc/en-us/articles/200711843-Working-Directories-and-Workspaces)について説明しました。 )、それはUnixのbash関数lsのようなものだと思います) - whoops、Josh Paulsonは@Samによって記述された特定の変数を使用しました 'メモリ内のすべてを削除するには、rm(list = ls() ) ' –

+0

これは問題なく動作しますが、小さなバグがあるかもしれません。名前が 'ABCtemp'のオブジェクトがあれば、それも削除されます。 「temp」で始まるオブジェクトを削除し、「ABCtemp」を保持するにはどうすればよいですか? – user3768495

+4

パターンに基準を追加するだけです。あなたの例では、 'pattern ="^temp "'は "temp"で始まる変数だけを捕捉するので、変数 'ABCtemp'は捕捉しません。 – Alan

-1

ls()はすべての変数をリストします。したがって、rm(list=ls())を試すと、すべての変数がクリアされます。

+4

これはありません質問をし、受け入れられた答えの下のコメントを見てください。 – Tensibai

1

あなたが試してみることのできるもう一つのバリエーションは、temp'xがたくさんある場合、(拡張@mnelの答え) です。

ここ

"n" はあなたが言うことができ、メモリ内のすべてを削除するには現在の一時変数の数

rm(list = c(paste("temp",c(1:n),sep=""))) 
関連する問題