[R] Suggestions for vectorizing/double loop

Thierry Onkelinx thierry.onkelinx at inbo.be
Mon Jan 23 14:12:44 CET 2017


Dear Luanna,

Assuming that oldnames and newnames are character (and not factor), the
just use stringsAsFactors = FALSE. That will save you from having to
convert the factors back to character.

data.frame(oldnames, newnames, stringsAsFactor = FALSE)

Best regards,

ir. Thierry Onkelinx
Instituut voor natuur- en bosonderzoek / Research Institute for Nature and
Forest
team Biometrie & Kwaliteitszorg / team Biometrics & Quality Assurance
Kliniekstraat 25
1070 Anderlecht
Belgium

To call in the statistician after the experiment is done may be no more
than asking him to perform a post-mortem examination: he may be able to say
what the experiment died of. ~ Sir Ronald Aylmer Fisher
The plural of anecdote is not data. ~ Roger Brinner
The combination of some data and an aching desire for an answer does not
ensure that a reasonable answer can be extracted from a given body of data.
~ John Tukey

2017-01-23 13:28 GMT+01:00 Luanna Dixson <justanotherdigression op gmail.com>:

> I need to rename a bunch of files, by searching for string matches in a
> list. Each list element containings a character with the old filename that
> I want to match to, and the new file name that I want to rename by.
>
> For instance, here filename '1001.xls' should match to list[[1]]$oldname
> and I want to rename it to 'newa.xls' from list[[1]]$newname.
>
> The actual new file names I have will feature a random alphanumeric number
> and the list will have a length of ~600.
>
>
> # files I want to rename
>
> files with old file name =c('1001.xls', '1002.xls')
>
> # list with old file names and new file names
>
> oldnames=c('1001', '1002', '1003')
>
> newnames=c('newa', 'newb', 'newc')
>
> df=data.frame(oldnames,newnames)
>
> list <- split(df, rownames(df))
>
>
> # turn list elements in character
>
> for(i in 1:length(list)) list[[i]]$oldnames=as.
> character(list[[i]]$oldnames)
>
> for(i in 1:length(list)) list[[i]]$newnames=as.
> character(list[[i]]$newnames)
>
>
> I heard that it would be better to vectorize this than trying to do a
> double loop so if someone could give me a hint about how to do this I would
> be very grateful!
>
>         [[alternative HTML version deleted]]
>
> ______________________________________________
> R-help op 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.
>

	[[alternative HTML version deleted]]



More information about the R-help mailing list