Skip to content
Prev 366754 / 398502 Next

Suggestions for vectorizing/double loop

Hi all,

Thanks very much for your help! You are correct in thinking the list is the
same as before, actually, my question was more about how to do the next
steps, where I needed to match the filenames of the files in my directory
with old (i.e current) and new file name prefixes in my list. For each
match I then wanted to rename the original file using the corresponding new
filename prefix from the list.

Sorry for being a bit confusing, I didn't post my first attempt to do this
at first as my code just didn't work at all, but I have had another go
using a matrix instead and I think this does the job.

old_path="./old/"
new_path="./new/"

old_names <- list.files(old_path)
head(old_names)

oldnames=c('1002', '1003')
newnames=c('1002_new', '1003_new')
mapping=cbind(oldnames,newnames)
head(mapping)

for (i in old_names){
    temp <- unlist(strsplit(i, "[.]"))[1]
    n <- which(is.element(mapping,temp))
    if(length(n)>0) {
        #copy the file to the new folder
        #re name it and the name is paste(mapping[n,2], '.xls', sep="")
        print(paste(mapping[n,2], '.xls', sep=""))
        newnames <- paste(mapping[n,2], '.xls', sep="")
        file.copy(from = paste(old_path, i, sep=""),
                  to = paste(new_path, newnames))
    }
}


On 23 January 2017 at 13:28, Luanna Dixson <justanotherdigression at gmail.com>
wrote: