[R] A language technical question.

Prof Brian Ripley ripley at stats.ox.ac.uk
Thu Jan 15 14:59:39 CET 2004


You have two problems.

1) You want to use

assign(paste("kalle", i, sep=""), saveLoadReference)

to create the name.

That one is discussed frequently enough to be an FAQ, and it is Q7.23.

2) You need to keep the return value of load to assign to the object.

So I think you want

for(i in length(infiles)) 
    assign(paste("kalle", i, sep=""), load(infiles[i]))

However, that assigns to kalle{n} the names(s) of the objects you loaded.
Is that what you actually wanted?  Or did you want the actual objects, not 
their `representation'.

If you want the actual objects, I suggest you use .readRDS instead.


On Thu, 15 Jan 2004, Johan Lindberg wrote:

> If I have 100 objekts in a folder and I prefer not to load them manually I 
> wonder how I do this in R if using a for-loop.
> 
> I was thinking initially to do something like this:
> 
> infiles <- dir(pattern=".RData")
> for(i in length(infiles))
>          {
>          load(infiles[i])
>          paste("kalle", i, sep="") <- saveLoadReference
>          }
> 
> But the line """paste("kalle", i, sep="")""" does not do it for me. I get 
> the error message "Error: Target of assignment expands to non-language object"
> 
> The thing that I do not master is how to create a name in a for-loop that I 
> can assign something to. And I want to be able to change that name as the 
> loop goes on. I want to create in this case
> kalle1
> kalle2
> kalle3
> ...
> kalle100
> 
> and they should all represent the objects that I opened with load(infiles[i])

-- 
Brian D. Ripley,                  ripley at stats.ox.ac.uk
Professor of Applied Statistics,  http://www.stats.ox.ac.uk/~ripley/
University of Oxford,             Tel:  +44 1865 272861 (self)
1 South Parks Road,                     +44 1865 272866 (PA)
Oxford OX1 3TG, UK                Fax:  +44 1865 272595




More information about the R-help mailing list