On Fri, Apr 20, 2012 at 4:42 PM, Jeff Newmiller
<jdnew...@dcn.davis.ca.us> wrote:
> If you read the help, it talks about compiling vectors into matrices, or 
> scalars into vectors. It does not say anything about combining matrices.
>
> For the error about 14 elements, you should keep in mind that matrices are 
> just vectors with dim attributes that indicate how the linear memory is to be 
> "folded".
>
> As far as I know, the standard way to handle combining matrices as you want 
> to would involve storing them in a list and using Reduce and rbind. If you 
> can vectorize the whole process instead of segmenting it by groups of rows 
> then you can speed things up considerably.

Thank you.  That was helpful.  I did read the help on [vsl]apply.  But
the idea that matrices are "folded vectors" was, of course not there.

Worik

> ---------------------------------------------------------------------------
> Jeff Newmiller                        The     .....       .....  Go Live...
> DCN:<jdnew...@dcn.davis.ca.us>        Basics: ##.#.       ##.#.  Live Go...
>                                      Live:   OO#.. Dead: OO#..  Playing
> Research Engineer (Solar/Batteries            O.O#.       #.O#.  with
> /Software/Embedded Controllers)               .OO#.       .OO#.  rocks...1k
> ---------------------------------------------------------------------------
> Sent from my phone. Please excuse my brevity.
>
> Worik R <wor...@gmail.com> wrote:
>
>>Friends
>>
>>I clearly donot understand how sapply and vapply work.
>>
>>What I have is a function that returns a matrix with an indeterminate
>>number of rows (some times zero) but a constant number of columns.  I
>>cannot reliably use an apply function to assemble the matrices into a
>>matrix.  I am not sure it is possible.
>>
>>I can demonstrate the core of my confusion with this simple code.
>>
>>A.f <- function(i){
>>  ret <- matrix("a", i, 7)
>>  cat(i, class(ret), dim(ret), "\n")
>>  return(ret)
>>}
>>V.f <- function(){
>>  SS <- vapply(c(1,2),
>>                 A.f,
>>                 rep('a', 7))
>>  return(SS)
>>}
>>S.f <- function(){
>>  SS <- sapply(c(1,2),
>>                 A.f)
>>  cat("SS", class(SS), dim(SS), "\n")
>>  return(SS)
>>}
>>
>>
>>Calling V.f() fails:
>>
>>> V.f()
>>1 matrix 1 7
>>2 matrix 2 7
>>Error in vapply(c(1, 2), A.f, rep("a", 7)) :
>>  values must be length 7,
>> but FUN(X[[2]]) result is length 14
>>>
>>
>>
>>Calling S.f() returns a list.
>>
>>
>>Do I have to accept I am going to be getting a list and I have to
>>assemble a matrix in a loop?
>>
>>cheers
>>Worik
>>
>>______________________________________________
>>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.
>

______________________________________________
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