[R] Populate a list / recursively set list values to NA

Erik Iverson eriki at ccbr.umn.edu
Thu Feb 17 23:11:39 CET 2011


Gene,

?rapply is a recursive version of ?lapply, and should work.

rapply(masterlist, function(x) x*NA, how = "replace")


--Erik

Gene Leynes wrote:
> Hello all,
> 
> Maybe I'm being thick, but I was trying to figure out a simple way to create
> a list with the same dimension of another list, but populated with NA
> values.
> 
>     masterlist = list(
>             aa=list(
>                     a=matrix(rnorm(100),10,10),
>                     b=matrix(rnorm(130),13,10),
>                     c=matrix(rnorm(140),14,10)),
>             bb=list(
>                     a=matrix(rnorm(100),10,10),
>                     b=matrix(rnorm(110),11,10),
>                     c=matrix(rnorm(120),12,10)),
>             cc=list(
>                     a=matrix(rnorm(100),10,10),
>                     b=matrix(rnorm(100),10,10),
>                     c=matrix(rnorm(100),10,10)),
>             dd=matrix(rnorm(225),15,15))
>     str(masterlist)
>     ## Yay!  A new list that's just like the master list!
>     newlist = masterlist
>     ## BOO!  Can't just set all the values to NA!
>     newlist = masterlist * NA
> 
>     ## This works... but requires knowledge of the structure
>     newlist = masterlist
>     newlist[['aa']] = lapply(masterlist[['aa']], function(x) x * NA)
>     newlist[['bb']] = lapply(masterlist[['bb']], function(x) x * NA)
>     newlist[['cc']] = lapply(masterlist[['cc']], function(x) x * NA)
>     newlist[['dd']] = masterlist[['dd']] * NA
>     str(newlist)
> 
> At this point I thought a recursive function would be a good idea, but I
> wasn't sure how to keep the nice list names.
> 
> I feel sure that this must be something that others have already done.
> 
> Thank you!!!
> 
> PS:
> I found an email in the archive about it, but that email un-helpfully
> instructed the user to LEARN HOW TO USE EMAIL.  Not sure how to use email to
> initialize a list. so if someone could explain to me how to use emails to
> initialize / populate a list, that would be cool also.
> Also, I did type ?list and ?lapply, and I did read the help files.  In fact,
> I learned about the very helpful vector("list", length) command yesterday!
> Pretty cool!
> I'm not opposed to looking at the help, but please provide some hint about
> what direction to take with the help.  Even a small hint will do!!
> 
> If you want to yell at me about reading the help or whatever, that's fine.
> But please do so offline so that the archives will be more valuable for
> future users.
> 
> 	[[alternative HTML version deleted]]
> 
> ______________________________________________
> 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.



More information about the R-help mailing list