[R] assign value to multiple objects with a given ls pattern

Ista Zahn izahn at psych.rochester.edu
Mon Feb 21 17:55:47 CET 2011


Hi Nuno,
Yes, you can do

for(i in ls(pattern="a"))
{
  assign(i, 99)
}

but honestly this is a bad idea. It will try to assign the value of 99
to any object in your workspace that contains an a, which sounds
really scary to me.

Better I think to use a list:

ab.list <- list(a1=1, a2=2, a3=3, a4=4, b1=3, b2=4)
ab.list[grep("a", names(ab.list))] <- 99

Or even just a named vector

ab.vector <- c(a1=1, a2=2, a3=3, a4=4, b1=3, b2=4)
ab.vector[grep("a", names(ab.vector))] <- 99

Best,
Ista

On Mon, Feb 21, 2011 at 4:22 PM, Nuno Prista <nmprista at fc.ul.pt> wrote:
> Dear R colleagues,
>
> This seems pretty straight forward but I have been banging my head on this for some time and can't seem to find a solution
>
> suppose I have something like
>
> a1<-1; a2<-2; a3<-3; a4<-4; b1<-3; b2<-4
> I would like to quickly assign to objects with a certain pattern, e.g., those in
>
> ls(pattern="a")
>
> a specific value, e.g., "99", without having to assign each object at a time.
>
> is there a way I can do this within a "for" cycle? I have tested several eval and parse statements but with no success.
>
> Regards,
>
> Nuno Prista
>
> ____________________________
> PhD student
> Instituto de Oceanografia
> Faculdade de Ciências da Universidade de Lisboa
> Campo Grande, Lisboa,
> 1749-016 Lisboa,
> Portugal
>
> ______________________________________________
> 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.
>



-- 
Ista Zahn
Graduate student
University of Rochester
Department of Clinical and Social Psychology
http://yourpsyche.org



More information about the R-help mailing list