[R] Automating object creation

Barry Rowlingson b.rowlingson at lancaster.ac.uk
Tue Apr 14 19:49:59 CEST 2009


On Tue, Apr 14, 2009 at 6:32 PM, Zachary Patterson
<zak.patterson at gmail.com> wrote:
> I am new to R. I would like to automate the creation of a number of
> vectors but can't seem to get the string formatting to work.
>
> Here's what I would like to be able to do:
>
> Suppose we have a vector:
> x <- c(2,4,5)
>
> I would like to be able to create a set of vectors whose names are
> associated with the values in x - e.g.
>
> x2 <- 0
> x4 <- 0
> x5 <- 0
>
> I have tried with a for loop and eval and sprintf, paste, etc. but end
> up with the following error:
>
> Error in sprintf("%s%i", "x", 1) <- 0 :
>  target of assignment expands to non-language object
>
> How can I ***assign*** a string formatted name to a vector?

 Ooh, you're so close. Read the help page for "assign" perhaps?

 help("assign")

and hence enlightenment.

 Also note it's not normally a good thing to do. Better to stick these
things in a list, because your next question is going to be 'how do I
**get** the value of x1, x2, x3 etc in a loop if i is 1,2 or 3?'. The
answer to that one is 'Read the help page for "get"'. But if you stick
your stuff in a list object the answer is simply x[[i]].

 See also FAQ 7.21:

http://cran.r-project.org/doc/FAQ/R-FAQ.html#How-can-I-turn-a-string-into-a-variable_003f

 But really, use a list :)

Barry




More information about the R-help mailing list