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

______________________________________________
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

Reply via email to