Hi,

In the example you showed:

m1<- matrix(0,length(vec),max(vec))
1*!upper.tri(m1)

#or
 m1[!upper.tri(m1)] <-  rep(rep(1,length(vec)),vec)

#But, in a case like below, perhaps:
vec1<- c(3,4,5)

 m2<- matrix(0,length(vec1),max(vec1))
 indx <- 
cbind(rep(seq_along(vec1),vec1),unlist(tapply(vec1,list(vec1),FUN=seq),use.names=FALSE))
m2[indx]<- 1
 m2
#     [,1] [,2] [,3] [,4] [,5]
#[1,]    1    1    1    0    0
#[2,]    1    1    1    1    0
#[3,]    1    1    1    1    1




A.K.


Hi- 

I'd like to create a matrix of 0's and 1's where the number of 
1's in each row defined by the value indexed in another vector, and 
where the (value-1) is back-filled by 0's. 

For example, given the following vector: 
vec= c(1,2,3) 

I'd like to produce a matrix with dimensions (length(vec), max(vec)): 

1,0,0 
1,1,0 
1,1,1 

Thank you!

______________________________________________
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