2012-07-24 36 views
48

Bộ nhớ của tôi bị chặn bởi một loạt tệp trung gian (gọi chúng là temp1, temp2, v.v.). Có thể xóa chúng khỏi bộ nhớ mà không thực hiện rm(temp1), rm(temp2) từng lần một không? Tôi đã thử rm(list(temp1, temp2, etc.)), nhưng điều đó dường như không hoạt động.Xóa nhiều đối tượng bằng rm()

Trả lời

75

Make danh sách một vector ký tự (không phải là một vector của tên)

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

hoặc

rm(temp1, temp2) 
+3

Để loại bỏ tất cả mọi thứ trong bộ nhớ, bạn có thể nói: rm (list = ls()) – Sam

+2

@Sam 'rm (list = ls (tất cả = TRUE)) 'nếu bạn muốn chắc chắn để có được tất cả mọi thứ. – Dason

2

Hoặc sử dụng biểu thức thông thường

"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

Một giải pháp khác rm(list=ls(pattern="temp")), loại bỏ tất cả đối tượng khớp với mẫu.

+0

Được mô tả [tại đây] (https://support.rstudio.com/hc/en-us/articles/200711843-Working-Directories-and-Workspaces) của Josh Paulson (Tôi không biết ls (...) 'đã làm, nhưng bây giờ tôi đoán nó giống như Unix ls chức năng bash) - Lỗi chính, Josh Paulson sử dụng rất nhiều cụ thể được mô tả bởi @Sam 'Để loại bỏ tất cả mọi thứ trong bộ nhớ, bạn có thể nói: rm (list = ls()) ' –

+0

Điều này hoạt động tốt nhưng có thể có một lỗi nhỏ. Nếu có một đối tượng có tên 'ABCtemp', nó cũng sẽ bị xóa. Làm thế nào tôi có thể chỉ cần loại bỏ các đối tượng bắt đầu bằng 'tạm thời' và giữ 'ABCtemp'? – user3768495

+4

Bạn chỉ cần thêm tiêu chí khác vào mẫu của mình. Đối với ví dụ của bạn, 'pattern ="^temp "' sẽ bắt chỉ biến bắt đầu bằng "temp", vì vậy không phải biến 'ABCtemp'. – Alan

-1

ls() sẽ liệt kê tất cả các biến. vì vậy nếu bạn thử rm(list=ls()), nó sẽ xóa tất cả các biến.

+4

này không được câu hỏi và xem các nhận xét theo câu trả lời được chấp nhận. – Tensibai

1

Một biến thể khác bạn có thể thử là (mở rộng câu trả lời của @ mnel) nếu bạn có nhiều temp'x '.

here "n" có thể là số lượng các biến tạm thời hiện nay

rm(list = c(paste("temp",c(1:n),sep=""))) 
Các vấn đề liên quan