[R] Create a variable lenght string that can be used in a dimnames statement

Bert Gunter bgunter@4567 @end|ng |rom gm@||@com
Mon Jul 3 22:40:41 CEST 2023


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 <jsorkin using 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 using 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]]



More information about the R-help mailing list