Bagaimana cara menghapus hanya beberapa objek tertentu dari ruang kerja?

161

Saya ingin menghapus beberapa data dari ruang kerja. Saya tahu tombol "Bersihkan Semua" akan menghapus semua data. Namun, saya hanya ingin menghapus data tertentu.

Sebagai contoh, saya memiliki bingkai data ini di bagian data:

data
data_1
data_2
data_3

Saya ingin menghapus data_1, data_2dan data_3, sambil menjaga data.

Saya mencoba data_1 <- data_2 <- data_3 <- NULL, yang memang menghapus data (saya pikir), tetapi masih menyimpannya di area ruang kerja, sehingga tidak sepenuhnya apa yang ingin saya lakukan.

Mengarungi
sumber

Jawaban:

246

Anda akan menemukan jawabannya dengan mengetik ?rm

rm(data_1, data_2, data_3)
Pop
sumber
44
Untuk menghapus semua variabel yang dapat Anda gunakan rm(list=ls()).
larkee
1
tetapi bagaimana Anda bisa melakukannya dengan GUI, tanpa baris perintah? seperti di Revolution R
skan
1
bagaimana jika saya ingin menghapus semua variabel dengan nama mulai dengan huruf A, katakan 'A001', 'A002' .... 'A999'. Saya tidak ingin mengetikkan begitu banyak nama variabel. Terima kasih!
user3768495
2
Gunakan jawaban @ mbask (tepat di bawah): rm(list = ls()[grep("A", ls())])
Pop
74

Cara yang berguna untuk menghapus seluruh set objek yang sama:

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

dengan demikian menghapus semua objek yang namanya dimulai dengan string "tmp".

Sunting: Mengikuti komentar Gsee, memanfaatkan patternargumen:

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

Sunting: Menjawab komentar Rafael, salah satu cara untuk mempertahankan hanya sebagian objek adalah dengan memberi nama data yang ingin Anda pertahankan dengan pola tertentu. Misalnya jika Anda ingin menghapus semua objek yang namanya tidak dimulai, paperAnda akan mengeluarkan perintah berikut:

rm(list = grep("^paper", ls(), value = TRUE, invert = TRUE))
MBB
sumber
7
lsmenerima patternargumen, sehingga Anda dapat menyederhanakannya untukrm(list=ls(pattern="^tmp"))
GSee
1
Secara terpisah, periksa apa yang terjadi ketika Anda menggunakan value=TRUEdengan grep... bisa menghemat pengetikan.
GSee
Hai, apakah ada cara untuk menyimpan beberapa data dan menghapus yang lainnya (jumlah yang lebih besar)? Cheers
Rafael
1
Hai! Dan bagaimana saya bisa menjaga di lingkungan R saya dua pola yang berbeda? Saya mencoba "rm (list = grep (" ^ paper "|" ObjectExample ", ls (), value = TRUE, invert = TRUE))". Apakah ada yang tahu?
Dekike
1
Anda harus memasukkan ekspresi reguler Anda ke dalam patternargumen grep:rm(list = grep("^paper|ObjectExample", ls(), value = TRUE, invert = TRUE))
mbask
15

Perintah berikut akan dilakukan

rm(list=ls(all=TRUE))
Jaamit
sumber
2
Ini akan menghapus segala sesuatu dari ruang kerja, bukan hanya data1, data2dan data3(yaitu dataakan dihapus juga). Yang baik-baik saja jika itu yang Anda inginkan ...
Phil
2
Dan bagaimana jika seseorang hanya ingin menghapus data, bukan fungsi, nilai, atau objek lain di, katakanlah, lingkungan global?
Nikos Alexandris
8

Gunakan perintah berikut

remove(list=c("data_1", "data_2", "data_3"))
S. Elzwawi
sumber
6

Anda dapat menggunakan aproposfungsi yang digunakan untuk menemukan objek menggunakan nama parsial.

rm(list = apropos("data_"))
Saroj Nayak
sumber
3

Jika Anda hanya ingin menghapus salah satu dari sekelompok variabel, maka Anda dapat membuat daftar dan menyimpan hanya variabel yang Anda butuhkan. Fungsi rm dapat digunakan untuk menghapus semua variabel selain dari "data". Ini skripnya:

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()
DanThompson
sumber
3

Jika Anda menggunakan RStudio, harap pertimbangkan untuk tidak menggunakan rm(list = ls())pendekatan ini! * Sebagai gantinya, Anda harus membangun alur kerja Anda dengan sering menggunakan cara pintas Ctrl+ Shift+ F10untuk memulai kembali sesi R. Ini adalah cara tercepat untuk menghentikan set variabel saat ini yang ditentukan pengguna DAN untuk menghapus paket, perangkat, dll. Reproduksibilitas pekerjaan Anda akan meningkat secara nyata dengan mengadopsi kebiasaan ini.

Lihat utas yang luar biasa ini pada komunitas Rstudio untuk (h / t @kierisi) untuk diskusi yang lebih menyeluruh (intisari utama ditangkap oleh apa yang telah saya nyatakan sebelumnya).

Aku harus mengakui beberapa tahun pertamaku tentang penulisan kode fitur R script setelah script dimulai dengan rm"trik" - aku menulis jawaban ini sebagai saran untuk siapa pun yang mungkin memulai karier R mereka.

* tentu saja ada kegunaan yang sah untuk ini - seperti attach- tetapi pengguna pemula akan jauh lebih baik dilayani (IMO) melintasi jembatan itu di kemudian hari.

MichaelChirico
sumber
3
  1. Di RStudio, pastikan Environmenttab dalam mode Grid(tidak List).

  2. Centang objek yang ingin Anda hapus dari lingkungan.

  3. Klik ikon sapu.

Paul
sumber
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
hyunwoo jeong
sumber
1

Untuk menghapus semua data:

klik Misc>Remove all objects.

Anda baik untuk pergi.

Untuk menghapus konsol:

klik edit>Clear console.

Tidak perlu kode apa pun.

Abdul
sumber
1
Padahal aku harus melakukannya Session> Clear Workspace....
Peter K.