[BioC] Subsetting in R

Ramon Diaz-Uriarte rdiaz at cnio.es
Thu Sep 18 13:50:40 MEST 2003


Dear Mick,

Regarding your final question, you can do

result[t > 4, ]

However, a couple of additional comments:

> t <= mt.teststat(matrix, class, test="t", nonpara="y")

The expression above won't work as given: you need "<-", not "<=". I assume it 
was a typo when copying.

You are naming your object as "t"; I'd rather not do that, since "t" is also 
the name of a function (for transpose) and that can lead to annoying and hard 
to find weird things down the road (once you forget that, 200 lines above, 
you created an object named t).

Similar for matrix: matrix is the name of an often used function; don't use it 
to name an object you just created.

> result = cbind(matrix, t)

I'd also use here "<-" instead of "=". This is not only a matter of personal 
taste, but can also help track down bugs, do searches, etc. Use of "<-" vs. 
"=" is discussed in several R/S manuals, books, etc, and comes up frequently 
in the R-help list.

Finally, it might be more convenient if you store everything as a data frame 
with named columns. For instance:

x <- matrix(rnorm(20), ncol = 4)
class.labels <- c(1, 1, 0, 0)
t1 <- mt.teststat(x, class.labels, test = "t", nonpar = "y")
my.results <- data.frame(x, statistic = t1)

Now you can do things such as:

my.results[my.results$statistic > 2,]
##or
subset(my.results, statistic > 2)


Anyway, subsetting matrices and other objects, and naming objects one has 
created are fairly common operations in R; I'd strongly suggest you take a 
look at one (or more) of the available documents. If impatient, take a look 
at "A guide for the unwilling R user". And then move on to "An introduction 
R", and/or the other documents.

Hope this helps,

Ramón

>
> So as far as I can tell i now have a matrix, "result", that has my
> normalised M values as columns with a final column on the end giving a
> non-parametric t-score for each row.
>
> I now want to subset this matrix so that I have only, say, those rows where
> t > 4.  Anyone have any idea how to do this?  I have tried all sorts of
> combinations of [,] on result and got nowhere.  I think I am using the
> wrong kind of object to do subsetting on :-(
>
> Thanks in advance for any help
>
> Mick
>
> _______________________________________________
> Bioconductor mailing list
> Bioconductor at stat.math.ethz.ch
> https://www.stat.math.ethz.ch/mailman/listinfo/bioconductor

-- 
Ramón Díaz-Uriarte
Bioinformatics Unit
Centro Nacional de Investigaciones Oncológicas (CNIO)
(Spanish National Cancer Center)
Melchor Fernández Almagro, 3
28029 Madrid (Spain)
Fax: +-34-91-224-6972
Phone: +-34-91-224-6900

http://bioinfo.cnio.es/~rdiaz



More information about the Bioconductor mailing list