2012-04-24 45 views
12

Tôi cố gắng để di chuyển file với số lượng lớn các loại khác nhau trong R.danh sách sao chép các tập tin từ một thư mục khác trong R

origindir <- c("c:/origindir") 
targetdir <- c("c/targetdir") 
filestocopy <- c("myfile.doc", "myfile.rda", "myfile.xls", 
       "myfile.txt", "myfile.pdf", "myfile.R") 

Tôi đã thử các sau đây, nhưng không biết làm thế nào để làm cho tất cả các file:

file.copy(paste (origindir, "myfile.doc", sep = "/"), 
      paste (targetdir, "myfile.doc", sep = "/"), 
      overwrite = recursive, recursive = FALSE, 
      copy.mode = TRUE) 

Tôi không biết cách thực hiện việc này.

+1

sử dụng 'lapply' để lặp qua vector của bạn của 'filestocopy', tạo ra một chức năng ẩn danh trong cuộc gọi lapply bạn để thay thế ở khắp mọi nơi bạn có' myfile.doc' ... một cái gì đó như 'lapply (filestocopy, function (x) file.copy (dán (origindir, x, sep = "/"), ... ' – Chase

+6

Ngoài ra, hãy nhìn vào' file.path() 'như là một thay thế cho' dán' ở trên, nó được cho là " nhanh hơn so với dán "và được sử dụng rộng rãi trong R chính nó. – Chase

+4

@Chase Tôi nghĩ rằng từ và đối số trong' file.copy' thực sự được vectorized. – joran

Trả lời

12

Như Joran và Chase đã chỉ ra trong các ý kiến, tất cả các bạn cần làm là:

file.copy(from=filestocopy, to=targetdir, 
      overwrite = recursive, recursive = FALSE, 
      copy.mode = TRUE) 

Sau đó, nếu bạn thực sự di chuyển các tập tin, loại bỏ các gốc với:

file.remove(filestocopy) 
+0

Tôi nhận được thông báo này: 'Lỗi trong file.copy (từ = filestocopy, to = targetdir, ghi đè = đệ quy,: đối tượng 'đệ quy' không tìm thấy'. Không đệ quy một bản dựng trong hàm? –

1

Chỉ cần mở rộng đề xuất của Chase.

lapply(filestocopy, function(x) file.copy(paste (origindir, x , sep = "/"), 
      paste (targetdir,x, sep = "/"), recursive = FALSE, copy.mode = TRUE)) 
+2

Tôi không biết tại sao bạn sẽ sử dụng điều này khi 'file.copy' mặc định có thể xử lý một vectơ tên tệp. – A5C1D2H2I1M1N2O1R2T1

Các vấn đề liên quan