[R] list output
MacQueen, Don
macqueen1 at llnl.gov
Thu Mar 26 20:21:48 CET 2015
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.hodgess at 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.hodgess at gmail.com
>
> [[alternative HTML version deleted]]
>
>______________________________________________
>R-help at 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.
More information about the R-help
mailing list