[R] triangular matrices input/output

Rui Barradas ruipbarradas at sapo.pt
Thu May 17 02:33:01 CEST 2012


Hello,

I needed this once.

upper.diag <- function(x, byrow=FALSE){
	m <- sqrt(1 + 8*length(x))
	if(abs(m - floor(m)) <  .Machine$double.eps^0.5)
		m <- (m - 1)/2
	else{
		warning("length of 'x' is not a triangular number.")
		m <- floor((m - 1)/2)
	}
	y <- matrix(0, nrow=m, ncol=m)
	if(byrow){
		y[lower.tri(y, TRUE)] <- x
		y <- t(y)
	}else
		y[upper.tri(y, TRUE)] <- x
	y
}

lower.diag <- function(x, byrow=FALSE){
	m <- sqrt(1 + 8*length(x))
	if(abs(m - floor(m)) <  .Machine$double.eps^0.5)
		m <- (m - 1)/2
	else{
		warning("length of 'x' is not a triangular number.")
		m <- floor((m - 1)/2)
	}
	y <- matrix(0, nrow=m, ncol=m)
	if(byrow){
		y[upper.tri(y, TRUE)] <- x
		y <- t(y)
	}else
		y[lower.tri(y, TRUE)] <- x
	y
}

lower.diag(1:6)
lower.diag(1:10, TRUE)
lower.diag(1:8)

upper.diag(1:6)
upper.diag(1:10, TRUE)
upper.diag(1:12)

Hope this helps,

Rui Barradas

casperyc wrote
> 
> Hi,
> 
> Is there any package that deals with triangular matrices?
> 
> Say ways of inputting an upper (lower) triangular matrix?
> 
> Or convert a vector of length 6 to an upper (lower) triangular matrix (by
> row/column)?
> 
> Thanks!
> 
> -----
> ######################
> PhD candidate in Statistics
> Big R Fan
> Big LEGO Fan
> Big sTaTs Fan
> ######################
> 
> --
> View this message in context:
> http://r.789695.n4.nabble.com/triangular-matrices-input-output-tp4630310.html
> Sent from the R help mailing list archive at Nabble.com.
> 
> ______________________________________________
> R-help@ 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.
> 


--
View this message in context: http://r.789695.n4.nabble.com/triangular-matrices-input-output-tp4630322p4630328.html
Sent from the R help mailing list archive at Nabble.com.



More information about the R-help mailing list