Làm thế nào để tôi chỉ xóa một vài đối tượng cụ thể khỏi không gian làm việc?


161

Tôi muốn xóa một số dữ liệu khỏi không gian làm việc. Tôi biết nút "Xóa tất cả" sẽ xóa tất cả dữ liệu. Tuy nhiên, tôi muốn xóa chỉ một số dữ liệu.

Ví dụ: tôi có các khung dữ liệu này trong phần dữ liệu:

data
data_1
data_2
data_3

Tôi muốn loại bỏ data_1, data_2data_3, trong khi giữ data.

Tôi đã thử data_1 <- data_2 <- data_3 <- NULL, loại bỏ dữ liệu (tôi nghĩ), nhưng vẫn giữ nó trong khu vực không gian làm việc, vì vậy nó không hoàn toàn là những gì tôi muốn làm.

Câu trả lời:


246

Bạn sẽ tìm thấy câu trả lời bằng cách gõ ?rm

rm(data_1, data_2, data_3)

44
Để xóa tất cả các biến bạn có thể sử dụng rm(list=ls()).
larkee

1
Nhưng làm thế nào bạn có thể làm với GUI, mà không có dòng lệnh? như trong Revolution R
skan

1
nếu tôi muốn xóa tất cả các biến có tên bắt đầu bằng chữ A, hãy nói 'A001', 'A002' .... 'A999'. Tôi không muốn gõ quá nhiều tên biến. Cảm ơn!
dùng3768495

2
Sử dụng câu trả lời của @ mbask (ngay bên dưới): rm(list = ls()[grep("A", ls())])
Pop

74

Một cách hữu ích để xóa toàn bộ tập hợp các đối tượng giống nhau:

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

do đó loại bỏ tất cả các đối tượng có tên bắt đầu bằng chuỗi "tmp".

Chỉnh sửa: Theo dõi nhận xét của Gsee, sử dụng patternđối số:

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

Chỉnh sửa: Trả lời bình luận của Rafael, một cách để chỉ giữ lại một tập hợp con các đối tượng là đặt tên cho dữ liệu bạn muốn giữ lại bằng một mẫu cụ thể. Ví dụ: nếu bạn muốn xóa tất cả các đối tượng có tên không bắt đầu bằng paperbạn sẽ đưa ra lệnh sau:

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

7
lschấp nhận một patternđối số, vì vậy bạn có thể đơn giản hóa điều đó thànhrm(list=ls(pattern="^tmp"))
GSee

1
Một cách riêng biệt, hãy kiểm tra những gì xảy ra khi bạn sử dụng value=TRUEvới grep... có thể lưu một số thao tác gõ.
GSee

Xin chào, có cách nào để giữ một vài dữ liệu và xóa những dữ liệu khác (số tiền lớn hơn) không? Chúc mừng
Rafael

1
Chào! Và làm thế nào tôi có thể giữ trong môi trường R của mình hai mẫu khác nhau? Tôi đã thử "rm (list = grep (" ^ paper "|" ObjectExample ", ls (), value = TRUE, invert = TRUE))". Có ai biết không?
Dekike

1
Bạn nên đưa biểu thức chính quy của mình vào patternđối số grep:rm(list = grep("^paper|ObjectExample", ls(), value = TRUE, invert = TRUE))
mbask

15

Theo lệnh sẽ làm

rm(list=ls(all=TRUE))

2
Điều này sẽ loại bỏ tất cả mọi thứ từ các không gian làm việc, không chỉ data1, data2data3(tức là datasẽ bị loại bỏ quá). Sẽ tốt thôi nếu đó là những gì bạn muốn ...
Phil

2
Và nếu người ta chỉ muốn xóa dữ liệu, không phải chức năng, giá trị hoặc các đối tượng khác trong môi trường toàn cầu thì sao?
Nikos Alexandris


6

Bạn có thể sử dụng aproposhàm được sử dụng để tìm các đối tượng sử dụng tên một phần.

rm(list = apropos("data_"))

3

Nếu bạn chỉ muốn xóa một trong các nhóm biến, thì bạn có thể tạo một danh sách và chỉ giữ lại biến bạn cần. Hàm rm có thể được sử dụng để loại bỏ tất cả các biến ngoài "dữ liệu". Đây là kịch bản:

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

Nếu bạn đang sử dụng RStudio, hãy xem xét việc không bao giờ sử dụng rm(list = ls())cách tiếp cận! * Thay vào đó, bạn nên xây dựng quy trình làm việc của bạn xung quanh thường xuyên sử dụng các Ctrl+ Shift+ F10phím tắt để khởi động lại phiên R của bạn. Đây là cách nhanh nhất để cả nuke tập hợp các biến do người dùng xác định VÀ xóa các gói, thiết bị đã tải, v.v ... Độ tái lập công việc của bạn sẽ tăng lên rõ rệt bằng cách áp dụng thói quen này.

Xem chủ đề tuyệt vời này trên cộng đồng Rstudio cho (h / t @kierisi) để thảo luận kỹ hơn (ý chính được nắm bắt bởi những gì tôi đã nêu).

Tôi phải thừa nhận tập lệnh mã hóa R vài năm đầu tiên của mình sau khi tập lệnh bắt đầu bằng rm"mánh khóe" - Tôi đang viết câu trả lời này như lời khuyên cho bất kỳ ai khác có thể bắt đầu sự nghiệp R của họ.

* tất nhiên có những cách sử dụng hợp pháp cho việc này - rất giống attach- nhưng người dùng bắt đầu sẽ được phục vụ tốt hơn nhiều (IMO) qua cây cầu đó vào một ngày sau đó.


3
  1. Trong RStudio, đảm bảo Environmenttab ở chế độ Grid(không List).

  2. Đánh dấu (các) đối tượng bạn muốn xóa khỏi môi trường.

  3. Nhấp vào biểu tượng chổi.


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

Để xóa tất cả dữ liệu:

bấm vào Misc>Remove all objects.

Tốt của bạn để đi.

Để xóa bảng điều khiển:

bấm vào edit>Clear console.

Không cần bất kỳ mã.


1
Mặc dù tôi phải làm Session> Clear Workspace....
Peter K.
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.