[R] Efficent way to create an nxn upper triangular matrix of one's
David Winsemius
dwinsemius at comcast.net
Fri Feb 13 14:40:40 CET 2009
The other solutions offered are perfectly workable. Here is a strategy
that is generalizable to other matrix designs (and on checking the
source of upper.tri and lower.tri, it's not surprising that they use
precisely the same strategy):
n <- 9
dm <- matrix(0, nrow=n, ncol=n)
dm[col(dm) >= row(dm)] <- 1
If you wanted only upper off-diagonal -1's, for instance, you could
use instead:
dm[col(dm) == (row(dm)+1) ] <- -1
--
David Winsemius
On Feb 11, 2009, at 4:22 PM, Dale Steele wrote:
> The code below create an nxn upper triangular matrix of one's. I'm
> stuck on finding a more efficient vectorized way - Thanks. --Dale
>
> n <- 9
> data <- matrix(data=NA, nrow=n, ncol=n)
> data
> for (i in 1:n) {
> data[,i] <- c(rep(1,i), rep(0,n-i))
> }
> data
>
> ______________________________________________
> 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