2012-04-24 13 views
12

Próbuję masowych plików ruch różnego rodzaju w R.lista kopiowanie plików z jednego folderu do innego w R

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

Próbowałem następujących, ale nie wiem jak to zrobić dla wszystkich plików:

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

Nie wiem jak to zrobić.

+1

użycie 'lapply' iteracyjne nad wektorem' filestocopy' utworzyć anonimową funkcję w swojej lapply wezwanie do zastąpienia wszędzie masz 'myfile.doc' ... coś takiego jak' lapply (filestocopy, funkcji (x) file.copy (paste (origindir, x, sep = "/"), ... ' – Chase

+6

Zobacz także' file.path() 'jako zamiennik' paste' powyżej, to powinno być " szybszy niż wklej "i jest szeroko stosowany w samym R. – Chase

+4

@Chase Myślę, że od i do argumentów w' file.copy' są w rzeczywistości wektoryzowane – joran

Odpowiedz

12

Jak Jøran i Chase już zauważył w komentarzach, wszystko co musisz zrobić, to:

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

Następnie, jeśli jesteś faktycznie ruchu pliki, usuń oryginały:

file.remove(filestocopy) 
+0

Otrzymałem tę wiadomość: 'Błąd w file.copy (from = filestocopy, to = targetdir, overwrite = recursive,: object 'recursive' not found' .Nie jest rekursywna funkcja kompilacji? –

1

Po prostu rozwijam sugestię Chase'a.

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

Nie wiem dlaczego użyjesz tego, gdy domyślny plik 'file.copy' będzie w stanie obsłużyć wektor nazw plików. – A5C1D2H2I1M1N2O1R2T1

Powiązane problemy