Thank you. It works great.

Kristian

2011/9/16 R. Michael Weylandt <michael.weyla...@gmail.com>

> I think changing nrow() to NROW() will get around that error. However,
> this, as you can see, this goes a little astray at the end. Perhaps
> something like this will work for you:
>
> z.ext <- rbind(z,array(0,c(9,3)))
> z.out <- array(0, c(3,3,9))
>
> for(i in 1:9){
>     z.out[,,i] <- cbind(z.ext[c(i,i+3,i+6),])
> }
> print(z.out)
>
> Hope this helps,
>
> Michael Weylandt
>
>
> On Wed, Sep 14, 2011 at 3:42 PM, Kristian Lind <
> kristian.langgaard.l...@gmail.com> wrote:
>
>> Hi,
>>
>> I'm solve a problem where I want to select every 3rd row from a matrix. I
>> do
>> this for all rows in a loop. This gives me "i" matrices with different
>> number of rows
>>
>> I want to stack these matrices in an array and fill the blanks with zero.
>>
>> Does anyone have any suggestions on how to go about this?
>>
>> So i want to go from
>>
>>       [,1] [,2] [,3]
>>  [1,]    1    1    1
>>  [2,]    2    2    2
>>  [3,]    3    3    3
>>  [4,]    4    4    4
>>  [5,]    5    5    5
>>  [6,]    6    6    6
>>  [7,]    7    7    7
>>  [8,]    8    8    8
>>  [9,]    9    9    9
>>
>> to
>>
>> , , 1
>>
>>     [,1] [,2] [,3]
>> [1,]    1    1    1
>> [2,]    4    4    4
>> [3,]    7    7    7
>>
>> , , 2
>>
>>     [,1] [,2] [,3]
>> [1,]    2    2    2
>> [2,]    5    5    5
>> [3,]    8    8    8
>>
>> , , 3
>>
>>     [,1] [,2] [,3]
>> [1,]    3    3    3
>> [2,]    6    6    6
>> [3,]    9    9    9
>>
>> , , 4
>>
>>     [,1] [,2] [,3]
>> [1,]    4    4    4
>> [2,]    7    7    7
>> [3,]    0    0    0
>>
>> ...
>>
>> , , 9
>>
>>     [,1] [,2] [,3]
>> [1,]    9    9    9
>> [2,]    0    0    0
>> [3,]    0    0    0
>>
>>
>> Here's my go at it
>>
>> z <- array(c(1:9), c(9,3))
>> z1 <- array(0, c(3,3,9))
>>    for(i in 1:9){
>>    if(nrow(z[seq(i,9,3),])  == 2)
>>    z1[,,i] <- rbind(z[seq(i,9,3),],c(0,0,0))
>>    else
>>    z1[,,i] <- z[seq(i,9,3),]
>>    }
>> print(z1)
>>
>> I get the following error: Error in if (nrow(z[seq(i, 9, 3), ]) == 2) z1[,
>> ,
>> i] <- rbind(z[seq(i,  :
>>  argument is of length zero
>>
>> This is because nrow(z[seq(i, 9, 3) becomes NULL.
>> Furthermore, this doesn't take care of the case where nrow(z[seq(i,9,3),])
>> ==1
>>
>> Sorry for the long email and thank you in advance for reading it ;)
>>
>> Kristian
>>
>>        [[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.
>>
>
>

        [[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.

Reply via email to