I am not going to try to sort out your confusion, as others have already tried and failed. But I will point out that "string" of variables is pretty much nonsense in R. A "character vector"/"vector of strings" is probably what you mean and want to provide column names // names for the second component of the dim list for a matrix. e.g.
> m <- matrix(1:6, nr=3) > m [,1] [,2] [1,] 1 4 [2,] 2 5 [3,] 3 6 > dimnames(m) NULL > dimnames(m) <- list(letters[1:3], c('foo','bar')) > m foo bar a 1 4 b 2 5 c 3 6 Cheers, Bert On Mon, Jul 3, 2023 at 1:10 PM Sorkin, John <jsor...@som.umaryland.edu> wrote: > Colleagues, > > I am sending this email again with a better description of my problem and > the area where I need help. > > I need help creating a string of variables that will be accepted by the > dimnames function. The string needs to start with the dimnames j and k > followed by a series of dimnames xxx1, . . . ., xxx2, . . ., xxxn. I create > xxx1, xxx2 (not going to xxxn to shorten the code below) as a string using > a for loop and the paste function. I then use a paste function, zzz <- > paste("j","k",string) to create the full set of dimnames, j, k, xxx1, xxx2 > as string. I create the matrix myvalues in the usual way and attempt to > assign dim names to the matrix using the following dimnames statement, > dimnames(myvalues)<-list(NULL,c(zzz)) > The dimnames statement leads to the following error, > Error in dimnames(x) <- dn : > length of 'dimnames' [2] not equal to array extent > A colnames statement, > colnames(myvalues)<-as.character(zzz) > produces the same error. > > Can someone tell me how to create a sting that can be used in the dimnames > statment? > > Thank you (and please accept my apologies for double posting). > > John > > # create variable names xxx1 and xxx2. > string="" > for (j in 1:2){ > name <- paste("xxx",j,sep="") > string <- paste(string,name) > print(string) > } > # Creation of xxx1 and xxx2 works > string > > # Create matrix > myvalues <- matrix(nrow=2,ncol=4) > head(myvalues,1) > # Add "j" and "k" to the string of column names > zzz <- paste("j","k",string) > zzz > # assign column names, j, k, xxx1, xxx2 to the matrix > # create column names, j, k, xxx1, xxx2. > dimnames(myvalues)<-list(NULL,c(zzz)) > colnames(myvalues) <- string > ______________________________________________ > R-help@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. > [[alternative HTML version deleted]] ______________________________________________ R-help@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.