[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