ワークスペースから特定のオブジェクトをいくつか削除するにはどうすればよいですか?


161

ワークスペースから一部のデータを削除したいと思います。[すべてクリア]ボタンをクリックすると、すべてのデータが削除されます。ただし、特定のデータのみを削除したいと思います。

たとえば、データセクションに次のデータフレームがあります。

data
data_1
data_2
data_3

私は削除したいと思いますdata_1data_2そしてdata_3、保持したままdata

私は試しましdata_1 <- data_2 <- data_3 <- NULLたが、データは削除されます(私はそう思います)が、それをワークスペース領域に保持しているので、私がやりたいことは完全ではありません。

回答:


246

あなたはタイプすることによって答えを見つけるでしょう ?rm

rm(data_1, data_2, data_3)

44
すべての変数を削除するために使用できますrm(list=ls())
ラーキー2014年

1
しかし、コマンドラインなしでGUIをどのように使用できますか?Revolution Rのように
skan

1
名前が文字Aで始まるすべての変数を削除する場合は、「A001」、「A002」....「A999」と言います。あまり多くの変数名を入力したくありません。ありがとう!
user3768495 2015

2
使用@ mbaskの回答(すぐ下): rm(list = ls()[grep("A", ls())])
ポップ

74

名前が似ているオブジェクトのセット全体を削除する便利な方法:

rm(list = ls()[grep("^tmp", ls())])

これにより、名前が文字列「tmp」で始まるすべてのオブジェクトが削除されます。

編集:Gseeのコメントに従い、pattern引数を使用します。

rm(list = ls(pattern = "^tmp"))

編集:ラファエルのコメントに答えて、オブジェクトのサブセットのみを保持する1つの方法は、保持するデータに特定のパターンで名前を付けることです。たとえば、名前がpaper次で始まらないオブジェクトをすべて削除したい場合は、次のコマンドを発行します。

rm(list = grep("^paper", ls(), value = TRUE, invert = TRUE))

7
lspattern引数を受け入れるため、次のように簡略化できますrm(list=ls(pattern="^tmp"))
GSee

1
それとは別に、... を使用するvalue=TRUEとどうなるかを確認してくださいgrep
GSee 2012

こんにちは、いくつかのデータを保持し、他のデータ(大量)を削除する方法はありますか?乾杯
ラファエル

1
こんにちは!また、R環境で2つの異なるパターンをどのように維持できますか?「rm(list = grep( "^ paper" | "ObjectExample"、ls()、value = TRUE、invert = TRUE))」を試しました。誰か知っている?
Dekike、

1
あなたは、あなたの中に正規表現が含まれている必要がありpattern引数greprm(list = grep("^paper|ObjectExample", ls(), value = TRUE, invert = TRUE))
mbask

15

次のコマンドは

rm(list=ls(all=TRUE))

2
これにより、、、および(だけdata1でなく)だけでなく、ワークスペースからすべてが削除されます。それがあなたの望むことならそれでも問題ありません...data2data3data
Phil

2
そして、たとえば、グローバル環境内の関数、値、その他のオブジェクトではなく、データのみを削除したい場合はどうでしょうか。
Nikos Alexandris


6

apropos名前の一部を使用してオブジェクトを検索するために使用される関数を使用できます。

rm(list = apropos("data_"))

3

変数のグループの1つを削除するだけの場合は、リストを作成して必要な変数だけを保持できます。rm関数を使用すると、「データ」以外のすべての変数を削除できます。スクリプトは次のとおりです。

0->data
1->data_1
2->data_2
3->data_3
#check variables in workspace
ls()
rm(list=setdiff(ls(), "data"))
#check remaining variables in workspace after deletion
ls()

#note: if you just use rm(list) then R will attempt to remove the "list" variable. 
list=setdiff(ls(), "data")
rm(list)
ls()

3

RStudioを使用している場合は、このrm(list = ls())アプローチを使用しないことを検討してください!*代わりに、Ctrl+ Shift+を頻繁に使用してワークフローを構築する必要があります。F10ショートカットをてRセッションを再開。これは、現在のユーザー定義変数のセットを核にしたり、ロードされたパッケージやデバイスなどをクリアしたりするための最も速い方法です。この習慣を採用することで、作業の再現性が著しく向上します。

より詳細議論については、Rstudioコミュニティの(h / t @kierisi)のこの優れたスレッドを参照してください(主な要点は、すでに述べた内容に基づいています)。

私は、rm「トリック」で始まるスクリプトの後に、自分自身の最初の数年間のRコーディング機能付きスクリプトを認めなければなりません。この答えは、Rのキャリアを始める可能性のある他の人へのアドバイスとして書いています。

*もちろん、これには正当な用途があります-似てattachいますが-初心者ユーザーは後日その橋を渡るほうがはるかに良いサービスを提供されるでしょう(IMO)。


3
  1. RStudioで、EnvironmentタブがGrid(ではなくList)モードであることを確認します。

  2. 環境から削除するオブジェクトにチェックマークを付けます。

  3. ほうきアイコンをクリックします。


2
paste0("data_",seq(1,3,1)) 
# makes multiple data.frame names with sequential number
rm(list=paste0("data_",seq(1,3,1))
# above code removes data_1~data_3

1

すべてのデータを消去するには:

をクリックしMisc>Remove all objectsます。

よろしくお願いします。

コンソールをクリアするには:

をクリックしedit>Clear consoleます。

コードは必要ありません。


1
私がしなければならなかったけれどもSession> Clear Workspace...
Peter K.
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.