[BioC] evaluating a character string as a variable name in an ExpressionSet object
Martin Morgan
mtmorgan at fhcrc.org
Fri Apr 17 18:10:50 CEST 2009
Kavitha Venkatesan <kavitha.venkatesan at gmail.com> writes:
> Thanks for all your suggestions. Both Martin's suggestions below (simpler
> solution) and Saroj's approach worked.
> FYI- Saroj's approach which when adapted to my situation would entail the
> following code:
>>for(i in varLabels(sample.ExpressionSet))
>> print( eval(parse(text=paste("sample.ExpressionSet","$",i,sep=""))) )
one would not normally do this; it is like making coffee from the
words 'coffee beans' rather than from the coffee beans themselves.
Martin
> Kavitha
>
>
> On Thu, Apr 16, 2009 at 11:41 PM, Martin Morgan <mtmorgan at fhcrc.org> wrote:
>
> Hi Kavitha --
>
> Kavitha Venkatesan <kavitha.venkatesan at gmail.com> writes:
> > I would like to know how to evaluate a character string as a
> variable name > in R. Specifically, I need to "compute" the
> variable name in the phenoData > slot of an ExpressionSet
> object. > >> varLabels(sample.ExpressionSet) > [1] "sex"
> "type" "score" > > Now I need to retrieve the factors
> sample.ExpressionSet$sex, > sample.ExpressionSet$type and
> sample.ExpressionSet$score in turn.
>
>
>
> Use [[ rather than $.
> > data(sample.ExpressionSet) > sample.ExpressionSet[["sex"]] [1]
> Female Male Male Male Female Male Male Male Female Male [11]
> Male Female Male Male Female Female Female Male Male
> Female [21] Male Female Male Male Female Female Levels:
> Female Male
> e.g.,
> > for (lbl in varLabels(sample.ExpressionSet)) +
> print(sample.ExpressionSet[[lbl]]) [1] Female Male Male
> Male Female Male Male Male Female Male [11] Male
> Female Male Male Female Female Female Male Male Female [21]
> Male Female Male Male Female Female Levels: Female Male [1]
> Control Case Control Case Case Control Case Case Case [10]
> Control Case Control Case Case Case Control Case
> Control [19] Case Case Control Control Control Control
> Case Case Levels: Case Control [1] 0.75 0.40 0.73 0.42
> 0.93 0.22 0.96 0.79 0.37 0.63 0.26 0.36 0.41 0.80 0.10 [16] 0.41
> 0.16 0.72 0.17 0.74 0.35 0.77 0.27 0.98 0.94 0.32
>
> Martin
>
> > Furthermore, I need to be able to generalize my code so
> that I can retrieve > this factor for any phenodata variable in
> any given ExpressionSet object. > > Clearly I cannot do
> something like > > for (i in
> c(1:length(varLabels(sample.ExpressionSet))) > { >
> class_label <- varLabels(sample.ExpresionSet)[i] >
> class_label_factor <- sample.ExpressionSet$class_label > } > >
> Here class_label is interpreted as a character string by R, but I
> need for > it to be evaluated as a variable name. Seems
> straightforward, but I couldn't > figure it out...How can I do
> this? Thanks in advance for any help! > > Kavitha >
>
> > [[alternative HTML version deleted]] > >
> _______________________________________________ > 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
> --
>
>
> Martin Morgan Computational Biology / Fred Hutchinson Cancer
> Research Center 1100 Fairview Ave. N. PO Box 19024 Seattle,
> WA 98109
> Location: Arnold Building M1 B861 Phone: (206) 667-2793
>
>
>
--
Martin Morgan
Computational Biology / Fred Hutchinson Cancer Research Center
1100 Fairview Ave. N.
PO Box 19024 Seattle, WA 98109
Location: Arnold Building M1 B861
Phone: (206) 667-2793
More information about the Bioconductor
mailing list