[BioC] Undesirable behavior of limma MArrayLM?

Paul Leo p.leo at uq.edu.au
Mon Jun 30 01:56:47 CEST 2008


I guess this is my point: fit2$genes below is a data.frame when I access
it with a numerical valve , this appears to be interpolated to a
character. 

I don't think of this as being typical behaviour for a data.frame see
the next line of code for data.frame "results". I access it the same
way, the index is treated as numeric : I get back nothing because the
numerical index exceeds the dimension of the data.frame.

> fit2$genes[8961,"ID"]
[1] "5050440"

> class(fit2$genes)
[1] "data.frame"

> results[8961,]  # same on any data.frame...
     ID logFC AveExpr  t P.Value adj.P.Val  B
NA <NA>    NA      NA NA      NA        NA NA

> dim(results)
[1] 2927    7
> class(results)
[1] "data.frame"


Bottom line I think this is undesirable behaviour as these two snips
line of code should return the SAME result... least to me: 

################# CODE 1######
>  fit2$genes[8963,"ID"] ## index is treated as character
[1] "5050440"	
############################

BUT

################# CODE 1######
>  test<-fit2$genes
> test[8963,"ID"]  ## index is treated as numeric 
[1] "106220736"
############################


> class(fit2$genes)
[1] "data.frame"
> class(test)
[1] "data.frame"

Not putting it forward as a bug, but I found this to be unexpected
behavior.


Cheers
Paul


> dim(fit2)
[1] 14260     6


-----Original Message-----
From: bioconductor-bounces at stat.math.ethz.ch
[mailto:bioconductor-bounces at stat.math.ethz.ch] On Behalf Of Gordon K
Smyth
Sent: Saturday, June 28, 2008 2:45 PM
To: Bioconductor mailing list
Subject: [BioC] Undesirable behavior of limma MArrayLM?

Hi Paul,

MArrayLM objects subset in the same way as other objects in R 
(data.frames, matrices, named vectors etc), and that was a deliberate 
design decision.  All of them can be subsetted using logical, character
or 
numerical indices.

Despite your code example, I'm not actually clear in what way you found 
the behaviour unexpected, or what behaviour you're suggesting would be 
more desirable.  It all seems to be working to me!

Regards
Gordon

----- original message ------
[BioC] Undesirable behavior of limma MArrayLM?
Paul Leo p.leo at uq.edu.au
Thu Jun 26 09:33:59 CEST 2008


Personally I don't like this kind of behavior  see "#*** and comments...
It will surely catch someone out, will it use a rowname or a  number ,
the joy of variable interpolation!
Do I complain too much or is this worth a fix?

> n<-8963
> fit2[8963,]$genes["ID"]
             ID
8963 106220736               ## ok that's what I wanted
> fit2$genes[8961,"ID"]  #**
[1] "5050440"		 ## oops!
> test<-fit2$genes
> test[8963,]
[1] "106220736"	## life is sane again, but now I need more caffeine!
>
> n<-8963
> fit2[n,]$genes["ID"]
             ID
8963 106220736
> fit2$genes[n,"ID"]  ### Works as I would expect AGAIN
[1] "106220736"
> test<-fit2$genes
> test[n,]
[1] "106220736"
>
> fit2[8963,]$genes["ID"]
             ID
8963 106220736
> fit2$genes[8961,"ID"]
[1] "5050440"
> fit2$genes["8961","ID"]  # Oh yes... now I get it!
[1] "5050440"
> fit2$genes[n,"ID"]
[1] "106220736"


> class(fit2)
[1] "MArrayLM"
attr(,"package")
[1] "limma"
> sessionInfo()
R version 2.7.1 RC (2008-06-16 r45949)
i386-pc-mingw32

locale:
LC_COLLATE=English_United States.1252;LC_CTYPE=English_United
States.1252;LC_MONETARY=English_United
States.1252;LC_NUMERIC=C;LC_TIME=English_United States.1252

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base


other attached packages:
[1] limma_2.14.5


Cheers
Paul

_______________________________________________
Bioconductor mailing list
Bioconductor at stat.math.ethz.ch
https://stat.ethz.ch/mailman/listinfo/bioconductor
Search the archives:
http://news.gmane.org/gmane.science.biology.informatics.conductor



More information about the Bioconductor mailing list