I don't think you are correctly keeping track of the structure of your objects. (and my email software may mess up the indentation, but I can't prevent it)
I have not tested, but try replacing out[i]$phi_0 <- x$phi_0 out[i]$maxlike <- x$maxlike out[i]$bigp <- x$bigp with out[[i]] <- list(phi_0=x$phi_0, maxlike=x$maxlike, bigp=x$bigp ) (double bracket, as Peter suggested) Then also replace aic[i] <- -2*out[i]$maxlike + (2*(i+1)) with aic[i] <- -2*out[[i]]$maxlike + (2*(i+1)) To begin understanding this, see this little sequence: > foo <- vector('list',3) > foo[[2]] <- list(a=1, b=2) > foo[2]$a NULL > foo[[2]]$a [1] 1 Also, which() does not return a list object as you are using it, so there is no reason to unlist() it. Might as well use which.min(minaic) while you're at it. So replace your last three lines with out[which.min(minaic)] as the last line of your function, before the closing } No need to use return() -Don -- Don MacQueen Lawrence Livermore National Laboratory 7000 East Ave., L-627 Livermore, CA 94550 925-423-1062 On 3/26/15, 11:22 AM, "Erin Hodgess" <erinm.hodg...@gmail.com> wrote: >Hello! > >I am having some trouble with some list output. > >Here is my code: >geobunch <- function(y) { > > out <- vector("list",3) > aic <- numeric(length=3) > print(str(out)) > for(i in 1:3) { > > x <- geomin(y,i) > print(i) > print(x) > print(str(x)) > out[i]$phi_0 <- x$phi_0 > out[i]$maxlike <- x$maxlike > out[i]$bigp <- x$bigp > aic[i] <- -2*out[i]$maxlike + (2*(i+1)) >} > minaic <- which(aic==min(aic)) > minout <- out[unlist(minaic)] > return(minout) >} > >And here is the output: >> geobunch(ez2a) >List of 3 > $ : NULL > $ : NULL > $ : NULL >NULL >[1] 1 >$phi_0 >[1] 2.856428 > >$bigp >[1] 0.1584016 > >$maxlike >[1] -473.0203 > >List of 3 > $ phi_0 : num 2.86 > $ bigp : num 0.158 > $ maxlike: num -473 >NULL >Error in aic[i] <- -2 * out[i]$maxlike + (2 * (i + 1)) : > replacement has length zero >In addition: Warning messages: >1: In out[i]$phi_0 <- x$phi_0 : > number of items to replace is not a multiple of replacement length >2: In out[i]$maxlike <- x$maxlike : > number of items to replace is not a multiple of replacement length >3: In out[i]$bigp <- x$bigp : > number of items to replace is not a multiple of replacement length >> > >I know that the problem is in how I am setting up the "out" variable, but >I'm not sure how to correct it. Also, the bigp variable can take on >different lengths. > >This is on R version 3.1.3, on Ubuntu 14.04. > >Thank you so much for any help. > >Sincerely, >Erin > > > >-- >Erin Hodgess >Associate Professor >Department of Mathematical and Statistics >University of Houston - Downtown >mailto: erinm.hodg...@gmail.com > > [[alternative HTML version deleted]] > >______________________________________________ >R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see >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 -- To UNSUBSCRIBE and more, see 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.