esApply {Biobase} | R Documentation |
esApply is a wrapper to apply for use with exprSets.
Because the application of a function to the rows of the expression
array usually involves variables in the phenoData
slot we have
used a special evaluation paradigm here.
The function FUN
may reference any data in phenoData by name.
esApply(X, MARGIN, FUN, ...)
X |
an instance of the exprSet class of the Biobase package.
It is assumed that X has information
on gene expression for G genes in N tissue samples. |
MARGIN |
The margin to apply to, either 1 for rows or 2 for columns. |
FUN |
any function |
... |
additional parameters for FUN. |
The phenoData
from X
is installed in an
environment. This environment is installed as the environment of
FUN
. This will then provide bindings for any symbols in FUN
that are the same as the names of the phenoData
of X
.
If FUN
has an environment already it is retained but placed after
the newly created environment. Some variable shadowing could occur
under these circumstances.
The result of apply(exprs(X),MARGIN, FUN, ...)
.
VJ Carey <stvjc@channing.harvard.edu>, R. Gentleman
require(Biobase) data(eset) # we know that eset has covariates in # the pData called "cov1" and "cov2" # # here are two functions conforming to the esApply # protocol ##here cov1 is an unbound value, it will be resolved ##by using the pData mytt.demo <- function(y) { ys <- split( y, cov1 ) t.test( ys[[1]], ys[[2]] )$p.value } myreg.demo <- function( y ) { # obtain the p value of the slope # associated with cov2, adjusting for cov1 # (if we were concerned with sign we could # save the z statistic instead at coef[3,3] # summary(lm(y~cov1+cov2))$coef[3,4] } # let's try it out newt <- esApply( eset, 1, mytt.demo ) # here's a resampling method resamp <- function( ESET ) { ntiss <- ncol(exprs(ESET)) newind <- sample(1:ntiss, size=ntiss, replace=TRUE) ESET[newind,] } # here's a filter q3g100filt <- function( eset ) { apply( exprs(eset), 1, function(x)quantile(x,.75)>100 ) } # want to filter after resampling and then apply set.seed(123) rest <- esApply( { bool <- q3g100filt(resamp(eset)); eset[bool,] }, 1, mytt.demo )