Hi all, I want to ask that how to create column names for a matrix. For example, the matrix below, the column names should be: 1-A, 1-B, 1-C, 1-D, 2-A, 2-B, 2-C, 2-D, 3-A, etc. Thanks for your help. chars = c('A','B','C','D') matrix1 = matrix(nrow = length(1:100), ncol = length(1:5)*length(chars)) k = 0 for(i in seq(1:length(1:5))){ for(j in seq(1:length(chars))){ k = k+1 matrix1[,k] = c(1:100)[k] } } [[alternative HTML version deleted]]
Hi, On 07/27/2016 11:17 AM, lily li wrote:> Hi all, > > I want to ask that how to create column names for a matrix. For example, > the matrix below, the column names should be: 1-A, 1-B, 1-C, 1-D, 2-A, 2-B, > 2-C, 2-D, 3-A, etc. Thanks for your help. > > chars = c('A','B','C','D') > matrix1 = matrix(nrow = length(1:100), ncol = length(1:5)*length(chars)) > k = 0 > for(i in seq(1:length(1:5))){ > for(j in seq(1:length(chars))){ > k = k+1 > matrix1[,k] = c(1:100)[k] > } > }Also how could you possibly use such level of code obfuscation to perform such simple initialization of your matrix? My 1st advice would be that you slow down and take the time to compare seq(1:length(1:5)) with 1:length(1:5) with 1:5. It will be a great learning experience! As for initializing your matrix, what about doing ncol <- 5 * length(chars) matrix1 <- matrix(seq_len(ncol), nrow=100, ncol=ncol, byrow=TRUE) instead? Then set the colnames with: colnames(matrix1) <- paste(rep(1:5, length(chars)), chars, sep="-") Cheers, H.> > [[alternative HTML version deleted]] > > ______________________________________________ > R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see > 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. >-- Herv? Pag?s Program in Computational Biology Division of Public Health Sciences Fred Hutchinson Cancer Research Center 1100 Fairview Ave. N, M1-B514 P.O. Box 19024 Seattle, WA 98109-1024 E-mail: hpages at fredhutch.org Phone: (206) 667-5791 Fax: (206) 667-1319
On 07/27/2016 11:40 AM, Herv? Pag?s wrote:> Hi, > > On 07/27/2016 11:17 AM, lily li wrote: >> Hi all, >> >> I want to ask that how to create column names for a matrix. For example, >> the matrix below, the column names should be: 1-A, 1-B, 1-C, 1-D, 2-A, >> 2-B, >> 2-C, 2-D, 3-A, etc. Thanks for your help. >> >> chars = c('A','B','C','D') >> matrix1 = matrix(nrow = length(1:100), ncol = length(1:5)*length(chars)) >> k = 0 >> for(i in seq(1:length(1:5))){ >> for(j in seq(1:length(chars))){ >> k = k+1 >> matrix1[,k] = c(1:100)[k] >> } >> } > > Also how could you possibly use such level of code obfuscation to > perform such simple initialization of your matrix? > > My 1st advice would be that you slow down and take the time to compare > seq(1:length(1:5)) with 1:length(1:5) with 1:5. It will be a great > learning experience! > > As for initializing your matrix, what about doing > > ncol <- 5 * length(chars) > matrix1 <- matrix(seq_len(ncol), nrow=100, ncol=ncol, byrow=TRUE) > > instead? > > Then set the colnames with: > > colnames(matrix1) <- paste(rep(1:5, length(chars)), chars, sep="-")or maybe colnames(matrix1) <- paste(rep(1:5, each=length(chars)), chars, sep="-") is what you're after. H.> > Cheers, > H. > >> >> [[alternative HTML version deleted]] >> >> ______________________________________________ >> R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see >> 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. >> >-- Herv? Pag?s Program in Computational Biology Division of Public Health Sciences Fred Hutchinson Cancer Research Center 1100 Fairview Ave. N, M1-B514 P.O. Box 19024 Seattle, WA 98109-1024 E-mail: hpages at fredhutch.org Phone: (206) 667-5791 Fax: (206) 667-1319
If replace 1:5 to char2 = c('east','west','south','north','central'), how to put on column names with the original structure? Thanks again. On Wed, Jul 27, 2016 at 12:40 PM, Herv? Pag?s <hpages at fredhutch.org> wrote:> Hi, > > > On 07/27/2016 11:17 AM, lily li wrote: > >> Hi all, >> >> I want to ask that how to create column names for a matrix. For example, >> the matrix below, the column names should be: 1-A, 1-B, 1-C, 1-D, 2-A, >> 2-B, >> 2-C, 2-D, 3-A, etc. Thanks for your help. >> >> chars = c('A','B','C','D') >> matrix1 = matrix(nrow = length(1:100), ncol = length(1:5)*length(chars)) >> k = 0 >> for(i in seq(1:length(1:5))){ >> for(j in seq(1:length(chars))){ >> k = k+1 >> matrix1[,k] = c(1:100)[k] >> } >> } >> > > Also how could you possibly use such level of code obfuscation to > perform such simple initialization of your matrix? > > My 1st advice would be that you slow down and take the time to compare > seq(1:length(1:5)) with 1:length(1:5) with 1:5. It will be a great > learning experience! > > As for initializing your matrix, what about doing > > ncol <- 5 * length(chars) > matrix1 <- matrix(seq_len(ncol), nrow=100, ncol=ncol, byrow=TRUE) > > instead? > > Then set the colnames with: > > colnames(matrix1) <- paste(rep(1:5, length(chars)), chars, sep="-") > > Cheers, > H. > > >> [[alternative HTML version deleted]] >> >> ______________________________________________ >> R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see >> 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. >> >> > -- > Herv? Pag?s > > Program in Computational Biology > Division of Public Health Sciences > Fred Hutchinson Cancer Research Center > 1100 Fairview Ave. N, M1-B514 > P.O. Box 19024 > Seattle, WA 98109-1024 > > E-mail: hpages at fredhutch.org > Phone: (206) 667-5791 > Fax: (206) 667-1319 >[[alternative HTML version deleted]]
ruipbarradas at sapo.pt
2016-Jul-27 18:50 UTC
[R] how to create column names for the matrix
Hello, Try chars = c('A','B','C','D') matrix1 = matrix(nrow = length(1:100), ncol = length(1:5)*length(chars)) k = 0 for(i in 1:length(1:5)){? # or more simply just for(i in 1:5) ? for(j in 1:length(chars)){ ??? k = k+1 ??? matrix1[,k] = k ? } } matrix1 tmp <- expand.grid(chars, 1:5, stringsAsFactors = FALSE) nms <- paste(tmp[[2]], tmp[[1]], sep = "-") rm(tmp) colnames(matrix1) <- nms head(matrix1) Hope this helps, Rui Barradas ? Citando lily li <chocold12 at gmail.com>:> Hi all, > > I want to ask that how to create column names for a matrix. For example, > the matrix below, the column names should be: 1-A, 1-B, 1-C, 1-D, 2-A, 2-B, > 2-C, 2-D, 3-A, etc. Thanks for your help. > > chars = c('A','B','C','D') > matrix1 = matrix(nrow = length(1:100), ncol = length(1:5)*length(chars)) > k = 0 > for(i in seq(1:length(1:5))){ > for(j in seq(1:length(chars))){ > ? ?k = k+1 > ? ?matrix1[,k] = c(1:100)[k] > } > } > > ? ? ? ? [[alternative HTML version deleted]] > > ______________________________________________ > R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see > https://stat.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide > http://www.R-project.org/posting-guide.htmland provide commented, > minimal, self-contained, reproducible code.? [[alternative HTML version deleted]]
Thanks, this works. I thought the code should put in the for loop, but it turns out an extra line. On Wed, Jul 27, 2016 at 12:50 PM, <ruipbarradas at sapo.pt> wrote:> Hello, > > Try > > > chars = c('A','B','C','D') > matrix1 = matrix(nrow = length(1:100), ncol = length(1:5)*length(chars)) > k = 0 > for(i in 1:length(1:5)){ # or more simply just for(i in 1:5) > for(j in 1:length(chars)){ > k = k+1 > matrix1[,k] = k > } > } > matrix1 > tmp <- expand.grid(chars, 1:5, stringsAsFactors = FALSE) > nms <- paste(tmp[[2]], tmp[[1]], sep = "-") > rm(tmp) > colnames(matrix1) <- nms > > head(matrix1) > > > Hope this helps, > > Rui Barradas > > > Citando lily li <chocold12 at gmail.com>: > > Hi all, > > I want to ask that how to create column names for a matrix. For example, > the matrix below, the column names should be: 1-A, 1-B, 1-C, 1-D, 2-A, 2-B, > 2-C, 2-D, 3-A, etc. Thanks for your help. > > chars = c('A','B','C','D') > matrix1 = matrix(nrow = length(1:100), ncol = length(1:5)*length(chars)) > k = 0 > for(i in seq(1:length(1:5))){ > for(j in seq(1:length(chars))){ > k = k+1 > matrix1[,k] = c(1:100)[k] > } > } > > [[alternative HTML version deleted]] > > ______________________________________________ > R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see > https://stat.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide > http://www.R-project.org/posting-guide.htmland provide commented, > minimal, self-contained, reproducible code. > > > >[[alternative HTML version deleted]]