[R] Reading a list of filenames from a csv file

Sarah Goslee sarah.goslee at gmail.com
Thu Jul 11 15:49:04 CEST 2013


Hi Janetta,

At a first guess, you need:

 files <- read.csv(file="files.csv",head=FALSE,sep=",", stringsAsFactors=FALSE)

str(files)

would clear up any confusion as to whether the contents of the first
column of files are character or not.

If that doesn't help, then setting i <- 1 and running each line of
code in the loop individually (copy and paste) will give you a clearer
idea of where problems arise.

Sarah

On Thu, Jul 11, 2013 at 9:01 AM, Jannetta Steyn <jannetta at henning.org> wrote:
> What would be the best way to read a list of filenames and headings from a
> csv file?
>
> The CSV file is structured as two columns, with column one being the
> filename and column two being a heading e.g.:
> ANA110915004A_3PERIOD_TmAvg-rdata.csv,Pre-DA
> ANA110915006A_3PERIOD_TmAvg-rdata.csv,DA-10^-6
> ANA110915012A_3PERIOD_TmAvg-rdata.csv,DA-10^-4
> ANA110915016A_3PERIOD_TmAvg-rdata.csv,Washout
>
>
> I want to be able to open the file using read.csv and use the heading as
> the header of a graph.
>
> Reading the filenames from the directory with list.files() works but then I
> don't have the headings that go with the file e.g.:
> filenames<-list.files(pattern="*.csv")
> for (i in seq_along(filenames)) {
>   con<-read.csv(filenames[i], headers=TRUE, sep=',')
> }
>
> I tried the code below (which I posted in a different thread) but the
> solutions that people offered me didn't get it to work. The code results in
>  'Error in read.table(file = file, header = header, sep = sep, quote =
> quote,  :
>   'file' must be a character string or connection
>
> # Read filenames from csv file
> files <- read.csv(file="files.csv",head=FALSE,sep=",")
>
> # for each filename read the file
> for (i in 1:length(files)) {
>   # f becomes the next row inthe file
>   f<-files[i,]
>   # the header to be used for the graph is in column 2 of f
>   head=f[2]
>   par(mfrow=c(4,2))
>   # the filename to be used is in column 1 of f
>   con<-read.csv(file=f[1], header=TRUE, sep=',')
>   tmp<-con$value2
>   data<-normalize_js(tmp,-1,1)
>   time<-con$time
>   # run the waveform analyser
>   waveformanalyser(data,time,head)
> }
>
> Regards
> Jannetta
>
> --
>
> ===================================
> Web site: http://www.jannetta.com
> Email: jannetta at henning.org
> ===================================
>
>         [[alternative HTML version deleted]]
>
> ______________________________________________
> R-help at r-project.org mailing list
> 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.



-- 
Sarah Goslee
http://www.functionaldiversity.org



More information about the R-help mailing list