Dale Steele
2009-Feb-11 21:22 UTC
[R] Efficent way to create an nxn upper triangular matrix of one's
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
Sundar Dorai-Raj
2009-Feb-11 21:32 UTC
[R] Efficent way to create an nxn upper triangular matrix of one's
Try x <- diag(n) x[upper.tri(x)] <- 1 On Wed, Feb 11, 2009 at 1:22 PM, Dale Steele <dale.w.steele at gmail.com> 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. >
Jorge Ivan Velez
2009-Feb-11 21:36 UTC
[R] Efficent way to create an nxn upper triangular matrix of one's
Dear Dale, Here is one way, probably not the best: n<-9 temp<-matrix(1,ncol=n,nrow=n) temp[lower.tri(temp)] <- 0 temp HTH, Jorge On Wed, Feb 11, 2009 at 4:22 PM, Dale Steele <dale.w.steele@gmail.com>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@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. >[[alternative HTML version deleted]]
Christos Hatzis
2009-Feb-11 21:38 UTC
[R] Efficent way to create an nxn upper triangular matrix of one's
Here is a way to do this: round(upper.tri(matrix(1, 9, 9))) Or if you also need the diagonal of one's round(upper.tri(matrix(1, 9, 9), diag = TRUE)) -Christos> -----Original Message----- > From: r-help-bounces at r-project.org > [mailto:r-help-bounces at r-project.org] On Behalf Of Dale Steele > Sent: Wednesday, February 11, 2009 4:23 PM > To: R help > Subject: [R] Efficent way to create an nxn upper triangular > matrix of one's > > 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. > >
David Winsemius
2009-Feb-13 13:40 UTC
[R] Efficent way to create an nxn upper triangular matrix of one's
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.