[R] Can't Destroy Dim Names

David Winsemius dwinsemius at comcast.net
Wed Dec 1 00:31:22 CET 2010


On Nov 30, 2010, at 6:07 PM, clangkamp wrote:

> Dear Jim
> I think the target is to get from a Named chr to a just chr
>>> str(mat)
>> Named chr [1:32268] "yQAAA" "jQAAQ" "UQAAg" "FQAAw" "1QABA" ...
>> - attr(*, "names")= chr [1:32268] "CAAAAAAAAA" "CAAAAAAAAC"
>> "CAAAAAAAAG" "CAAAAAAAAT" ...
>
> I have presumably the same problem
>> str(DC1a)
> num [1:18, 1:48, 1:35] 3124.4 3049.2 227.8 41.4 76 ...
> - attr(*, "dimnames")=List of 3
>  ..$ Figure  : Named chr [1:18]  "CDS1" ...
>  .. ..- attr(*, "names")= chr [1:18] "1"
>  ..$ Code    : Named chr [1:48] "AGR"
> .. ..- attr(*, "names")= chr [1:48] "1" "36" "71" "106" ...
>  ..$ variable: Named chr [1:35] "X30.09.2009" "
> .. ..- attr(*, "names")= chr [1:35] "1" "2" "3" "4" ...
>> DC1_SM<-abind(DC1a, DC1_PLCF_SM1, along=1, new.names=)
>> str(DC1_SM)
> num [1:24, 1:48, 1:35] 3124.4 3049.2 227.8 41.4 76 ...
> - attr(*, "dimnames")=List of 3
>  ..$ : chr [1:24]  "CDS1" ...
>  ..$ : chr [1:48] "AGR"
>  ..$ : chr [1:35] "X30.09.2009" "
>
> names(dimnames(DC1_PLCF_SM1))<-names(dimnames(DC1a))
>
> The point is to kill the lines with the bit
> .. ..- attr(*, "names")= chr [1:35] "1" "2" "3" "4" ...
> and change the "Named chr" into a plain chr.

It is not at all clear to me that the problem posed a year and a half  
ago is the same as the one you perceive you are facing. In any event  
you are welcome to mangle your object (which you have not offered for  
testing) by turning a named dimension name vector into an unnamed one:

?unname
?Extract

DCtest <- array(1:27, c(3,3,3))
dimnames(DCtest) <- list(dim1 =c(a="a",b="b",c="c"),   #named vector
                             dim2=letters[4:6],            #unnamed  
vectors
                             dim3= letters[7:9])

 > str(DCtest)
  int [1:3, 1:3, 1:3] 1 2 3 4 5 6 7 8 9 10 ...
  - attr(*, "dimnames")=List of 3
   ..$ dim1: Named chr [1:3] "a" "b" "c"
   .. ..- attr(*, "names")= chr [1:3] "a" "b" "c"
   ..$ dim2: chr [1:3] "d" "e" "f"
   ..$ dim3: chr [1:3] "g" "h" "i"
 > dimnames(DCtest)[1]
$dim1
   a   b   c
"a" "b" "c"

 > dimnames(DCtest)[[1]]
   a   b   c
"a" "b" "c"

So use the [[<- function to replace the named vector with an unnamed  
one:

 > dimnames(DCtest)[[1]] <- unname( dimnames(DCtest)[[1]] )
 > str(DCtest)
  int [1:3, 1:3, 1:3] 1 2 3 4 5 6 7 8 9 10 ...
  - attr(*, "dimnames")=List of 3
   ..$ dim1: chr [1:3] "a" "b" "c"
   ..$ dim2: chr [1:3] "d" "e" "f"
   ..$ dim3: chr [1:3] "g" "h" "i"

>
> -----
> Christian Langkamp
> christian.langkamp-at-gmxpro.de
>
> -- 
> View this message in context: http://r.789695.n4.nabble.com/Can-t-Destroy-Dim-Names-tp876633p3066413.html

David Winsemius, MD
West Hartford, CT



More information about the R-help mailing list