[R] Create matrix with column names wiht the same prefix xxxx and that end in 1, 2

Rui Barradas ru|pb@rr@d@@ @end|ng |rom @@po@pt
Mon Jul 3 20:34:44 CEST 2023


Às 19:00 de 03/07/2023, Sorkin, John escreveu:
> I am trying to create an array, myvalues, having 2 rows and 4 columns, where the column names are j,k,xxx1,xxx2. The code below fails, with the following error, "Error in dimnames(myvalues) <- list(NULL, zzz) :
>    length of 'dimnames' [2] not equal to array extent"
> 
> Please help me get the code to work.
> 
> Thank you,
> 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,zzz)
> 
> 
> ______________________________________________
> 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.
Hello,

You don't need so many calls to paste, one is enough.
And you don't need the for loop at all, paste and paste0 are vectorized.



myvalues <- matrix(nrow=2,ncol=4)

cnames <- paste0("xxx", 1:2)
cnames
# [1] "xxx1" "xxx2"

colnames(myvalues) <- c("j", "k", cnames)



Hope this helps,

Rui Barradas



More information about the R-help mailing list