From: Gabor Grothendieck <ggrothendieck_at_gmail.com>

Date: Wed 23 Aug 2006 - 00:00:52 EST

R-help@stat.math.ethz.ch 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. Received on Wed Aug 23 00:30:02 2006

Date: Wed 23 Aug 2006 - 00:00:52 EST

Here is another variation using Robin's idea of t(sapply(...))

v <- c(3:5, 0)

t(sapply(lapply(v, function(n) seq(length = n)), "length<-", max(v) ))

# which can be shortened even further for the case where # there are no zeros in v

v <- 3:5

t(sapply(lapply(v, seq), "length<-", max(v) ))

On 8/22/06, Robin Hankin <r.hankin@noc.soton.ac.uk> wrote:

> Gabor makes a good point about seq() vs a:b [a common gotcha

*> for me].
**>
**>
**> I'll revise my original function to:
**>
**> > f <- function(a,n){(seq(length=a))[1:n]}
**> > t(sapply(c(2,3,4,4,4,5,6,0),f,n=5))
**> [,1] [,2] [,3] [,4] [,5]
**> [1,] 1 2 NA NA NA
**> [2,] 1 2 3 NA NA
**> [3,] 1 2 3 4 NA
**> [4,] 1 2 3 4 NA
**> [5,] 1 2 3 4 NA
**> [6,] 1 2 3 4 5
**> [7,] 1 2 3 4 5
**> [8,] NA NA NA NA NA
**> >
**>
**>
**>
**>
**> rksh
**>
**> On 22 Aug 2006, at 13:55, Gabor Grothendieck wrote:
**>
**> > Here are two solutions. seq(length = ...) instead of
**> > just seq(...) is so that v can possibly contain zeros.
**> >
**> > # data
**> > v <- 3:5
**> >
**> > # solution 1 - rbind/lapply
**> > f <- function(n) {
**> > s = seq(length = n)
**> > replace(rep(NA, max(v)), s, s)
**> > }
**> > do.call(rbind, lapply(v, f))
**> >
**> > # solution 2 - loop
**> > mat <- matrix(NA, length(v), max(v))
**> > for(i in seq(v)) {
**> > s <- seq(length = v[i])
**> > mat[i, s] <- s
**> > }
**> >
**> >
**> > On 8/22/06, Sara-Jane Dunn <SND@bas.ac.uk> wrote:
**> >> Hi,
**> >>
**> >> I'm having trouble applying the matrix function. I'd like to be
**> >> able to
**> >> create a matrix of vectors filled in by rows, which are not all
**> >> the same
**> >> length, and so I need it to fill in NAs where applicable.
**> >>
**> >> It's easiest to explain with a simple example:
**> >>
**> >> Suppose vec = c(3,4,5). How can I form a matrix of the vectors
**> >> 1:vec[j]
**> >> for j=1:3?
**> >> i.e. 1 2 3 NA NA
**> >> 1 2 3 4 NA
**> >> 1 2 3 4 5
**> >> I've tried matrix(c(1:vec[j]),nrow=max(j),ncol=max(vec)) but it will
**> >> only give me a matrix with repeated values for j=1, like 1 2 3 1
**> >> 2
**> >> 3 1 2 3 1
**> >> 2 3 1 2 3
**> >>
**> >> Also using the list function hasn't got me anywhere either..
**> >>
**> >> Any help/ideas would be greatly appreciated!
**> >>
**> >> Many thanks,
**> >> Sara-Jane Dunn
**> >>
**> >> --
**> >> This message (and any attachments) is for the recipient only...
**> >> {{dropped}}
**> >>
**> >> ______________________________________________
**> >> R-help@stat.math.ethz.ch 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@stat.math.ethz.ch 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.
**>
**> --
**> Robin Hankin
**> Uncertainty Analyst
**> National Oceanography Centre, Southampton
**> European Way, Southampton SO14 3ZH, UK
**> tel 023-8059-7743
**>
**>
*

R-help@stat.math.ethz.ch 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. Received on Wed Aug 23 00:30:02 2006

Archive maintained by Robert King, hosted by
the discipline of
statistics at the
University of Newcastle,
Australia.

Archive generated by hypermail 2.1.8, at Wed 23 Aug 2006 - 02:22:08 EST.

*
Mailing list information is available at https://stat.ethz.ch/mailman/listinfo/r-help.
Please read the posting
guide before posting to the list.
*