[R] Building a list
Noah Silverman
noah at smartmediacorp.com
Mon May 31 00:05:59 CEST 2010
That would be great, except I just realized I made a typo when sending
my code.
I'm tracking 20 coefficents for 10 groups. So I need a "top" list of 10
groups. Then each of the 10,000 samples for each of the 20 coefficients.
It should be more like this:
for(j in 1:10000){
for(g in groups){
coef <- c(1,2,3,4,5,6,7,8,9,10) #would be actual MCMC samples
Chain[[g]] <- rbind(Chain[[g]], coef)
}
}
So, there are 10 lists in "Chain" (One for each group.) Each list is
then a matrix/data.frame of values for each coef. (Hence the "rbind" in
my code.)
R gives me an error about the subscript, as Chain[[g]] is empty for the
first iteration.
On 5/30/10 3:00 PM, Joshua Wiley wrote:
> Hello Noah,
>
> Does this work for you?
>
> Chain <- vector("list", 10000)
> for (j in 1:10000){
> coef <- c(1,2,3,4,5,6,7,8,9,10) #would be actual MCMC samples
> Chain[[j]] <- rbind(Chain[[j]], coef)
>
> If it does, this has the additional advantage that it tends to be
> faster to initialize the list at size rather than expanding it as
> needed.
>
> HTH,
>
> Josh
>
> On Sun, May 30, 2010 at 2:52 PM, Noah Silverman <noah at smartmediacorp.com> wrote:
>
>> Hello,
>>
>> I need to build a "list of lists"
>>
>> We have 20 groups we are generating MCMC samples for. There are 10
>> coefficients, and 10000 MCMC iterations.
>>
>> I would like to store each iteration by-group in a list. My problem is
>> with the first iteration.
>>
>> Here is a toy example:
>>
>> Chain <- list()
>> for (j in 1:10000){
>> coef <- c(1,2,3,4,5,6,7,8,9,10) #would be actual MCMC samples
>> Chain[[j]] <- rbind(Chain[[j]], coef)
>> }
>>
>> This returns an error, UNLESS I initialize the first row of Chain[[j]]
>> with something.
>>
>> The idea is that for any group, I can quickly extract, plot, average,
>> etc the values for each coefficient.
>>
>> for example:
>>
>> Chain[[5]][,3] will give me all 10,000 values of coefficient 3 for group
>> 5.
>>
>> Again, this seems to work, but I can't initialize the chain with a
>> random value as it will cause problems with the data summary later.
>> (Each row in Chain[[j]] will be out of sync by 1, subsequently all
>> summary and plotting work will have to account for this - it can get
>> messy in a large program.)
>>
>> Is there an easier way to do this? Am I missing something?
>>
>> ______________________________________________
>> 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