[R] matrix values linked to vector index
Christoph Häni
ch.haeni at gmail.com
Sun Oct 13 09:55:29 CEST 2013
Just a further suggestion:
vec <- c(3,2,5,0,1)
mat <- t(sapply(vec,">=",1:max(vec)))
ifelse(mat,1,0)
Cheers,
Christoph
2013/10/11 arun <smartpink111 at yahoo.com>:
> 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 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