[BioC] Assigning values to environments - merging them?

James W. MacDonald jmacdon at med.umich.edu
Tue Jun 10 19:45:29 CEST 2008


Hi Helen,

Helen Zhou wrote:
> Dear Sir/Madam
> 
> I have two questions.
> 
> 1) I am currently trying to add a lot of values to an
> environment. A simplistic example is:
> 
> names	<- as.character(1:100000)
> values	<- data.frame(a=rep("a", 4), b=(rep("b", 4)))
> environment	<- new.env(parent=emptyenv())
> for (i in 1:100000) {
> 	assign(names[i], values, envir=environment)	
> }

Ouch! You don't want to do that. See multiassign() in the Biobase package.

> 
> I find that as I gets bigger this runs increasingly
> slow. Is this caused by the increasing size of the
> enviroment? Or by something else? And is there a way
> for me to avoid this?
> 
> 2) Assume that I have two different environments that
> I would like to merge into one so all the values are
> shared, how can I accomplish this? For example with:
> 
> e1 <- new.env(parent = emptyenv())
> e2 <- new.env(parent = emptyenv())
> assign("a", 3, envir=e1)
> assign("b", 4, envir=e2)
> 
> how can I join e1 and e2 so I have for example e3
> containing all the values. This seems to happen if I
> have:
> 
> e1 <- e2 <- new.env(parent = emptyenv())
> assign("a", 3, envir=e1)
> assign("b", 4, envir=e2)
> 
> but is there a way to do it for enviroments that are
> already existing.

I don't know of a way to merge environments directly. However, you could 
just pull things out of each env into two lists, concatenate, and stuff 
into a new env.

l1 <- as.list(e1)
l2 <- as.list(e2)
e3 <- l2e(c(l1, l2))

Best,

Jim



> 
> Thanks you for any help you can give me. I am sorry if
> my questions are very simple, but I am a bit confused
> by the concept of environemnts and how to work with
> them.
> 
> Yours truly.
> Mrs Helen Zhou
> 
> _______________________________________________
> Bioconductor mailing list
> Bioconductor at stat.math.ethz.ch
> https://stat.ethz.ch/mailman/listinfo/bioconductor
> Search the archives: http://news.gmane.org/gmane.science.biology.informatics.conductor

-- 
James W. MacDonald, M.S.
Biostatistician
Affymetrix and cDNA Microarray Core
University of Michigan Cancer Center
1500 E. Medical Center Drive
7410 CCGC
Ann Arbor MI 48109
734-647-5623



More information about the Bioconductor mailing list