Bert Gunter
2023-Jul-03 20:40 UTC
[R] Create a variable lenght string that can be used in a dimnames statement
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')) > mfoo bar a 1 4 b 2 5 c 3 6 Cheers, Bert On Mon, Jul 3, 2023 at 1:10?PM Sorkin, John <jsorkin at 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 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. >[[alternative HTML version deleted]]
Rolf Turner
2023-Jul-03 22:34 UTC
[R] Create a variable lenght string that can be used in a dimnames statement
On Mon, 3 Jul 2023 13:40:41 -0700 Bert Gunter <bgunter.4567 at gmail.com> wrote:> I am not going to try to sort out your confusion, as others have > already tried and failed.<SNIP> Fortune nomination!!! cheers, Rolf Turner -- Honorary Research Fellow Department of Statistics University of Auckland Stats. Dep't. (secretaries) phone: +64-9-373-7599 ext. 89622 Home phone: +64-9-480-4619