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.

Jawaban:


246

Anda akan menemukan jawabannya dengan mengetik ?rm

rm(data_1, data_2, data_3)

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))

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))

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"))

6

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

rm(list = apropos("data_"))

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()

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.


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

  2. Centang objek yang ingin Anda hapus dari lingkungan.

  3. Klik ikon sapu.


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

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.


1
Padahal aku harus melakukannya Session> Clear Workspace....
Peter K.
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.