> -----Original Message----- > From: r-help-boun...@r-project.org > [mailto:r-help-boun...@r-project.org] On Behalf Of Peter Langfelder > Sent: Wednesday, May 26, 2010 11:06 PM > To: r-help@r-project.org > Subject: Re: [R] list of complex objects? > > Simply keep track of the next free component, or use > > nextComp = length(list_of_lists)+1, > > then use > > list_of_lists[[nextComp]] = fitJC1 > > Unlike with vectors, with lists you don't have to specify > length and can add > as many list components as you want later The length of the list will > automatically adjust.
'Nonrecursive' vectors (i.e., of numbers, strings, or logicals) auto-extend just as lists do. If you are planning on making a very long vector (either a list or a nonrecursive variety), it will go faster if you preallocate it to the eventual size. With numeric vectors you can do with with numeric(size) but with list(size) doesn't do that: use vector("list",size). > # use auto-extension of numeric vector: > system.time({ s0<-numeric(0) ; for(i in 1:1e5)s0[i]<-i }) user system elapsed 21.293 0.000 21.294 > # preallocate numeric vector > system.time({ s100000<-numeric(1e5) ; for(i in 1:1e5)s100000[i]<-i }) user system elapsed 0.184 0.000 0.186 > identical(s0, s100000) # same answer in different times [1] TRUE > # use auto-extension of list > system.time({ s0<-vector("list",0) ; for(i in 1:1e5)s0[i]<-list(i) }) user system elapsed 49.795 1.704 51.496 > # preallocate list > system.time({ s100000<-vector("list",100000) ; for(i in 1:1e5)s100000[i]<-list(i) }) user system elapsed 0.256 0.000 0.256 > identical(s0, s100000) [1] TRUE Bill Dunlap Spotfire, TIBCO Software wdunlap tibco.com > > Peter > > > > On Wed, May 26, 2010 at 9:21 PM, Nick Matzke > <mat...@berkeley.edu> wrote: > > > Thanks! I tried that before but for some reason didn't > notice that it was > > working correctly. > > > > PS: How would I append another element to the list? This > doesn't work: > > > > x = append(list_of_fits, fitJC1) > > > > # still works, from original list construction > > x[3] > > > > # but this doesn't work > > x[4] > > > > Cheers! > > Nick > > > > > > > > Peter Langfelder wrote: > > > >> c concatenates all arguments. For example, c(c(0,1,2), > c(3,4,5)) gives > >> a vector 0,1,2,3,4,5. > >> Another example: > >> > >> c(list(a=c(0,1), b = c(2,3)), list(c = c(4,5), d = c(5,6))) > >>> > >> $a > >> [1] 0 1 > >> > >> $b > >> [1] 2 3 > >> > >> $c > >> [1] 4 5 > >> > >> $d > >> [1] 5 6 > >> > >> So instead of a list of two lists, you get a single list with 4 > >> components. > >> > >> If you want to make a list of objects, use > >> > >> list_of_fits = list(fitJC1, fitJC2, fitJC3) > >> > >> HTH, > >> > >> Peter > >> > >> > >> On Wed, May 26, 2010 at 5:23 PM, Nick Matzke > <mat...@berkeley.edu> wrote: > >> > >>> > >>> Erik Iverson wrote: > >>> > >>>> Nick Matzke wrote: > >>>> > >>>>> Hi all, > >>>>> > >>>>> If I would like to make a list of complex objects -- in my case, > >>>>> phylogenetic trees, but it could be e.g. statistical > results from > >>>>> something > >>>>> like lm, or whatever -- how can I put them into a list? > >>>>> > >>>>> When I try the obvious methods, e.g. cat, append, list, > etc., I seem to > >>>>> get weird behaviors where R is trying to merge the > subfields within the > >>>>> objects or something. > >>>>> > >>>>> Any help much appreciated. Cheers!! > >>>>> Nick > >>>>> > >>>>> > >>>>> Perhaps you can give us a reproducible example that shows > >>>> > >>>> a) what you tried > >>>> b) what happened > >>>> c) what you expected to happen > >>>> > >>>> > >>> Hi! Sorry, I should have done that initially. Here's my problem: > >>> > >>> #==================== > >>> # example of the issue with lists of objects: > >>> > >>> library(ape) > >>> library(phangorn) > >>> example(NJ) > >>> > >>> # Jukes-Cantor (starting tree from NJ) > >>> fitJC1 <- pml(tree, Laurasiatherian) > >>> > >>> # optimize edge length parameter > >>> fitJC2 <- optim.pml(fitJC1) > >>> fitJC2 > >>> > >>> # search for a better tree using NNI rearrangements > >>> fitJC3 <- optim.pml(fitJC2, optNni=TRUE) > >>> fitJC3 > >>> > >>> # Now, the function SH.test can allegedly take "objects of > >>> # class 'pml' separated by commas, [or] a list containing > >>> # such objects". Since I'm going to have hundreds of these > >>> # fits, I'd like to make submit a list of them to SH.test, > >>> # something like this: > >>> > >>> list_of_fits = c(fitJC1, fitJC2, fitJC3) > >>> SH.test(list_of_fits, B=100) > >>> > >>> # ...but "list of fits" is something weird, e.g. > >>> (list_of_fits[1]) > >>> > >>> #...does not return the same thing as: > >>> (fitJC1) > >>> #==================== > >>> > >>> > >>> > >>> > >>> > >>> > >>> -- > >>> ==================================================== > >>> Nicholas J. Matzke > >>> Ph.D. Candidate, Graduate Student Researcher > >>> Huelsenbeck Lab > >>> Center for Theoretical Evolutionary Genomics > >>> 4151 VLSB (Valley Life Sciences Building) > >>> Department of Integrative Biology > >>> University of California, Berkeley > >>> > >>> Graduate Student Instructor, IB200A > >>> Principles of Phylogenetics: Systematics > >>> http://ib.berkeley.edu/courses/ib200a/index.shtml > >>> > >>> Lab websites: > >>> http://ib.berkeley.edu/people/lab_detail.php?lab=54 > >>> http://fisher.berkeley.edu/cteg/hlab.html > >>> Dept. personal page: > >>> > http://ib.berkeley.edu/people/students/person_detail.php?person=370 > >>> Lab personal page: > http://fisher.berkeley.edu/cteg/members/matzke.html > >>> Lab phone: 510-643-6299 > >>> Dept. fax: 510-643-6264 > >>> Cell phone: 510-301-0179 > >>> Email: mat...@berkeley.edu > >>> > >>> Mailing address: > >>> Department of Integrative Biology > >>> 3060 VLSB #3140 > >>> Berkeley, CA 94720-3140 > >>> > >>> ----------------------------------------------------- > >>> "[W]hen people thought the earth was flat, they were > wrong. When people > >>> thought the earth was spherical, they were wrong. But if > you think that > >>> thinking the earth is spherical is just as wrong as > thinking the earth is > >>> flat, then your view is wronger than both of them put together." > >>> > >>> Isaac Asimov (1989). "The Relativity of Wrong." The > Skeptical Inquirer, > >>> 14(1), 35-44. Fall 1989. > >>> http://chem.tufts.edu/AnswersInScience/RelativityofWrong.htm > >>> > >>> ______________________________________________ > >>> R-help@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. > >>> > >>> > >> ______________________________________________ > >> R-help@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. > >> > >> > > -- > > ==================================================== > > Nicholas J. Matzke > > Ph.D. Candidate, Graduate Student Researcher > > Huelsenbeck Lab > > Center for Theoretical Evolutionary Genomics > > 4151 VLSB (Valley Life Sciences Building) > > Department of Integrative Biology > > University of California, Berkeley > > > > Graduate Student Instructor, IB200A > > Principles of Phylogenetics: Systematics > > http://ib.berkeley.edu/courses/ib200a/index.shtml > > > > Lab websites: > > http://ib.berkeley.edu/people/lab_detail.php?lab=54 > > http://fisher.berkeley.edu/cteg/hlab.html > > Dept. personal page: > > http://ib.berkeley.edu/people/students/person_detail.php?person=370 > > Lab personal page: > http://fisher.berkeley.edu/cteg/members/matzke.html > > Lab phone: 510-643-6299 > > Dept. fax: 510-643-6264 > > Cell phone: 510-301-0179 > > Email: mat...@berkeley.edu > > > > Mailing address: > > Department of Integrative Biology > > 3060 VLSB #3140 > > Berkeley, CA 94720-3140 > > > > ----------------------------------------------------- > > "[W]hen people thought the earth was flat, they were wrong. > When people > > thought the earth was spherical, they were wrong. But if > you think that > > thinking the earth is spherical is just as wrong as > thinking the earth is > > flat, then your view is wronger than both of them put together." > > > > Isaac Asimov (1989). "The Relativity of Wrong." The > Skeptical Inquirer, > > 14(1), 35-44. Fall 1989. > > http://chem.tufts.edu/AnswersInScience/RelativityofWrong.htm > > > > ______________________________________________ > > R-help@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. > > > > [[alternative HTML version deleted]] > > ______________________________________________ > R-help@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. > ______________________________________________ R-help@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.