[R] how to convert a vector to an upper matrix
Berend Hasselman
bhh at xs4all.nl
Fri Jun 10 09:59:06 CEST 2011
Zhishi Wang wrote:
>
> Hi all,
>
> If I have a vector A<-1:6, I would like to convert A to an upper
> matrix M=[0 1 2 3 ; 0 0 4 5 ; 0 0 0 6; 0 0 0 0].
> That is, if the length of the known vector is n, then the order m of
> the matrix I'd like to have should satisfy m(m-1)/2=n
> How could I do this in R?
> I really don't want to do it using a loop. Is there a function in R to do
> this ?
>
?upper.tri
?uniroot
A <- 1:6
n <- length(A)
m <- as.integer(uniroot(function(x) {x*(x-1)- 2*n}, c(1, n))$root)
U <- matrix(0,nrow=m,ncol=m)
U[upper.tri(U)] <- A
U
Berend
--
View this message in context: http://r.789695.n4.nabble.com/how-to-convert-a-vector-to-an-upper-matrix-tp3587715p3587810.html
Sent from the R help mailing list archive at Nabble.com.
More information about the R-help
mailing list