2012-04-24 19 views
12

que estoy tratando de mover archivos a granel de diferentes tipos en R.lista de copia de archivos de una carpeta a otra en I

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

He intentado lo siguiente, pero no saben cómo hacer para todos los archivos:

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

No sé cómo hacerlo.

+1

uso 'lapply' para iterar sobre su vector de' filestocopy', crear una función anónima en su llamada lapply para reemplazar todas partes usted tiene 'myfile.doc' ... algo como' lapply (filestocopy, la función (x) file.copy (paste (origindir, x, sep = "/"), ... ' – Chase

+6

Además, mira' file.path() 'como un reemplazo para 'pegar' arriba, se supone que es" más rápido que pegar "y se usa ampliamente en el propio R. – Chase

+4

@Chase Creo que los argumentos desde y hacia en' archivo.copia' están en realidad vectorizados. – joran

Respuesta

12

Como Joran y Chase ya se han señalado en los comentarios, todo lo que tiene que hacer es:

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

Entonces, si en realidad estás en movimiento los archivos, retire los originales con:

file.remove(filestocopy) 
+0

Recibí este mensaje: 'Error en file.copy (from = filestocopy, to = targetdir, overwrite = recursive,: object 'recursive' not found'. ¿No es recursivo una función build in? –

1

Simplemente ampliando la sugerencia de Chase.

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

No sé por qué lo usaría cuando el 'archivo.copia' predeterminado sea capaz de manejar un vector de nombres de archivos. – A5C1D2H2I1M1N2O1R2T1

Cuestiones relacionadas