[R] Rename multiple files in a directory and write renamed files back to directory

Jeff Newmiller jdnewmil at dcn.davis.CA.us
Fri Dec 5 17:17:51 CET 2014


You could read the help file:

?formatC

which says that flag modifies how the numbers are formatted... it does not affect what numbers are used..  that is given by the "x" argument (typically the first item in the argument list to formatC). In your case I think that came from a call to the seq function, so perhaps you should read

?seq
---------------------------------------------------------------------------
Jeff Newmiller                        The     .....       .....  Go Live...
DCN:<jdnewmil at dcn.davis.ca.us>        Basics: ##.#.       ##.#.  Live Go...
                                      Live:   OO#.. Dead: OO#..  Playing
Research Engineer (Solar/Batteries            O.O#.       #.O#.  with
/Software/Embedded Controllers)               .OO#.       .OO#.  rocks...1k
--------------------------------------------------------------------------- 
Sent from my phone. Please excuse my brevity.

On December 5, 2014 7:35:59 AM PST, Zilefac Elvis via R-help <r-help at r-project.org> wrote:
>Hi Chel,
>How can I modify the script such that the numbering starts from 200,...
>instead of 001?
>flag="0" does not accept anything other than 0.
>Thanks,
>Asong.
>
>
>
>On Thursday, December 4, 2014 11:17 PM, Chel Hee Lee
><chl948 at mail.usask.ca> wrote:
>I see that a function 'format()' is used in your code.
>
>> format(c(1,5,32,100), width=3, flag="0")
>[1] "  1" "  5" " 32" "100"
>
>> formatC(c(1,5,32,100), width=3, flag="0")
>[1] "001" "005" "032" "100"
>
>I hope this helps.
>
>Chel Hee Lee
>
>
>
>On 12/04/2014 10:54 PM, Zilefac Elvis wrote:
>> Hi Chel,
>> Thanks for the timely reply.
>> It works but a minor problem remains.
>> Here is the modified version of your code:
>>
>> file_names<- list.files(pattern="Sim1971-2000_Daily_")
>> new_names <- paste("rcp45_Daily_Sim",format(seq(length(file_names)),
>width=3, flag="00"), ".dat", sep="")
>>
>> #files <-  paste(paste(getwd(),lfile,sep="/"),
>list.files(lfile),sep="/")# getwd of these files/contents
>> file.rename(from=file_names, to=new_names)
>> list.files(pattern="*.dat")
>>
>> I changed width =3 and flag=00 because my output has to be
>001.dat...200.dat. However, this is what i got:
>>
>> list.files(pattern="*.dat")
>> [1] "rcp45_Daily_Sim  1.dat" "rcp45_Daily_Sim  2.dat"
>"rcp45_Daily_Sim  3.dat" "rcp45_Daily_Sim  4.dat"
>> [5] "rcp45_Daily_Sim  5.dat" "rcp45_Daily_Sim  6.dat"
>"rcp45_Daily_Sim  7.dat" "rcp45_Daily_Sim  8.dat"
>> [9] "rcp45_Daily_Sim  9.dat" "rcp45_Daily_Sim 10.dat"
>>
>>
>> The zeros disappear but I need them.
>>
>> Please help.
>> Asong.
>>
>>
>> On Thursday, December 4, 2014 10:16 PM, Chel Hee Lee
><chl948 at mail.usask.ca> wrote:
>> I put five data files (example1.dat, example2.dat, example3.dat,
>> example4.dat, example5.dat, example6.dat) in my working directory.
>>
>>>
>>> file_names <- list.files(pattern="*.dat")
>>> file_names
>> [1] "example1.dat" "example2.dat" "example3.dat" "example4.dat"
>> "example5.dat"
>> [6] "example6.dat"
>>>
>>> new_names <- paste("new_example_",
>> + formatC(seq(length(file_names)), width=2, flag="0"),
>> + ".dat", sep="")
>>> new_names
>> [1] "new_example_01.dat" "new_example_02.dat" "new_example_03.dat"
>> [4] "new_example_04.dat" "new_example_05.dat" "new_example_06.dat"
>>>
>>> file.rename(from=file_names, to=new_names)
>> [1] TRUE TRUE TRUE TRUE TRUE TRUE
>>> list.files(pattern="*.dat")
>> [1] "new_example_01.dat" "new_example_02.dat" "new_example_03.dat"
>> [4] "new_example_04.dat" "new_example_05.dat" "new_example_06.dat"
>>>
>>
>> Is this what you are looking for?  I hope this helps.
>>
>> Chel Hee Lee
>>
>>
>>
>> On 12/04/2014 09:44 PM, Zilefac Elvis via R-help wrote:
>>> Hello,
>>> I would like to rename multiple files in a directory. Filenames are
>read using:
>>>
>>> lfile <- list.files(pattern="rcp45_Daily_")
>>> files <-  paste(paste(getwd(),lfile,sep="/"),
>list.files(lfile),sep="/")# getwd of these files
>>>
>>> dput(lfile)
>>> c("rcp45_Daily_Sim001.dat", "rcp45_Daily_Sim002.dat")
>>>
>>>
>>> - How can I rename these files (200 in number) using something like:
>>>     file.rename(lfile, paste0("rcp45_Daily_Sim", 1:200))?The new
>filenames should be rcp45_Daily_Sim001, rcp45_Daily_Sim002, ...,
>rcp45_Daily_Sim200.
>>>
>>> - I would like to write the new file names to the directory.
>>>
>>> The data files contain huge amounts of data and should not be read
>into R. Only the file names should change.
>>>
>>> Many thanks for your helpful answers.
>>> Asong.
>>>
>>> ______________________________________________
>>> R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see
>>> https://stat.ethz.ch/mailman/listinfo/r-help
>>> PLEASE do read the posting guide
>http://www.R-project.org/posting-guide.html
>>> and provide commented, minimal, self-contained, reproducible code.
>>
>>>
>
>______________________________________________
>R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see
>https://stat.ethz.ch/mailman/listinfo/r-help
>PLEASE do read the posting guide
>http://www.R-project.org/posting-guide.html
>and provide commented, minimal, self-contained, reproducible code.



More information about the R-help mailing list