[R] How to interpret the name of an object literally?
Duncan Murdoch
murdoch at stats.uwo.ca
Tue Nov 24 21:07:24 CET 2009
On 11/24/2009 1:13 PM, novocaine wrote:
> Hi,
>
> I can't seem to figure out how to tell R to stop expanding an object. I
> would like to use the literal name rather than the expanded value.
>
> The issue occurs in a function I've been writing. The problematic part looks
> like this:
>
> # "fund" is a matrix of open, high, low, close, and volume prices
> returns <- function(fund)
> {
> p_12ago = as.vector(fund[nrow(fund)-252,6])
> perc_diff_12mo = ((p_last - p_12ago) / p_last)*100
>
> #This is the line that's giving me problems:
> funds=c(as.character(fund))
>
> mo12=c(perc_diff_12mo)
> final_results=data.frame(funds,mo12)
> return(final_results)
> }
>
> I can't figure out how to insert the original argument from the function (in
> this case the name of the fund).
>
> Ultimately I want to be able to do returns("GOOG"), and have the output in
> this format:
>
> funds 12mo
> GOOG 14%
>
> I've tried using as.character(), quote(), dQuote(), sQuote(), gsub(), cat(),
> and a bunch of combinations of them. I'm brand new to R, so I apologize if
> I'm going about this in the wrong way.
>
> Thanks in advance for any help!
Use deparse(substitute(fund)). The inner function gives you the
expression passed as fund, the deparse() turns it into a string.
You can in weird cases get more than one line of output from deparse;
you could use the width.cutoff and/or nlines arguments to control this.
Duncan Murdoch
More information about the R-help
mailing list