[R] using eval-parse-paste in a loop

From: Michael Anyadike-Danes <M.Anyadike-Danes_at_erini.ac.uk>
Date: Tue, 26 Feb 2008 17:24:40 +0000


R-helpers  

I have 120 small Excel sheets to read and I am using library(xlsReadWrite): one example below.  

I had hoped to read sheets by looping over a list of numbers in their name (eg Book1.xls, Book2.xls, etc).  

I thought I had seen examples which used eval-parse-paste in this way.  

However, I have not been able to get it to work..  

  1. is this a feasible approach?
  2. if not advice would be welcome.
  3. Equally, advice about a better approach would also be v. welcome.

I haven't included the data because my failed attempt is data-independent (and probably more basic).    

Michael Anyadike-Danes  

############# show that read.xls works  

> test <- read.xls("Book1.xls",sheet=1,from=4,colClasses="numeric")

> str(test)

'data.frame': 23 obs. of 13 variables:

$ Off.Flows..Thousands.: num 117.19 NaN NA 1.43 2.26 ...

$ Off.Flows..Thousands.: num 8.42 NaN NA 0.08 0.11 0.01 0.11 1.59 0.16
0.04 ...

$ Off.Flows..Thousands.: num 20 NaN NA 0.2 0.3 0.02 0.32 4.39 0.41
0.11 ...

$ Off.Flows..Thousands.: num 12.36 NaN NA 0.14 0.27 ...

$ Off.Flows..Thousands.: num 7.59 NaN NA 0.11 0.18 0.01 0.14 1.46 0.23
0.06 ...

$ Off.Flows..Thousands.: num 10.31 NaN NA 0.12 0.23 ...

$ Off.Flows..Thousands.: num 7.55 NaN NA 0.08 0.2 0.01 0.11 1.6 0.23
0.05 ...

$ Off.Flows..Thousands.: num 10.57 NaN NA 0.19 0.21 ...

$ Off.Flows..Thousands.: num 9.36 NaN NA 0.13 0.26 0.02 0.13 2.12 0.27
0.07 ...

$ Off.Flows..Thousands.: num 8.21 NaN NA 0.1 0.19 0.01 0.1 1.9 0.23
0.06 ...

$ Off.Flows..Thousands.: num 9.04 NaN NA 0.13 0.11 0.01 0.17 1.54 0.17
0.05 ...

$ Off.Flows..Thousands.: num 13.42 NaN NA 0.14 0.19 ...

$ Off.Flows..Thousands.: num 0.37 NaN NA NaN 0.01 NaN 0.01 0.05 0.02
NaN ...  

############### simple minded attempt substituting eval-parse-paste  

> nam <- 1  

> test <-
eval(parse(paste('read.xls("Book',nam,'.xls",sheet=1,from=4,colClasses=" numeric")',sep='')))

Error in file(file, "r") : unable to open connection

In addition: Warning message:

In file(file, "r") :

  cannot open file
'read.xls("Book1.xls",sheet=1,from=4,colClasses="numeric")', reason 'Invalid argument'  

############### stripping off eval, looking for clues  

>
parse(paste('read.xls("Book',nam,'.xls",sheet=1,from=4,colClasses="numer ic")',sep=''))

Error in file(file, "r") : unable to open connection

In addition: Warning message:

In file(file, "r") :

  cannot open file
'read.xls("Book1.xls",sheet=1,from=4,colClasses="numeric")', reason 'Invalid argument'  

############### stripping off parse, still looking for clues  

>
paste('read.xls("Book',nam,'.xls",sheet=1,from=4,colClasses="numeric")', sep='')

[1] "read.xls(\"Book1.xls\",sheet=1,from=4,colClasses=\"numeric\")"  

################################



Economic Research Institute of Northern Ireland

Floral Buildings

2-14 East Bridge Street

Belfast BT1 3NQ

Tel: (028) 90727362

Fax: (028) 90319003

        [[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. Received on Tue 26 Feb 2008 - 17:24:57 GMT

Archive maintained by Robert King, hosted by the discipline of statistics at the University of Newcastle, Australia.
Archive generated by hypermail 2.2.0, at Tue 26 Feb 2008 - 18:30:16 GMT.

Mailing list information is available at https://stat.ethz.ch/mailman/listinfo/r-help. Please read the posting guide before posting to the list.

list of date sections of archive