[Rd] Very Long Expressions

McGehee, Robert Robert.McGehee at geodecapital.com
Sun Jan 23 20:04:01 CET 2005


Greetings,
I'm having some difficulties with evaluating very long expressions
(Windows/Linux 2.0.1), as seen below, and would greatly appreciate any
help, thoughts or work arounds. Let's say that I wanted to see what I
would get if I added 1 to itself 498 times. One way of doing this would
be to evaluate the expression 1+1+1+... 

> eval(parse(text = paste(rep(1, 498), collapse = "+")))
[1] 498

However, if we try this with 499+ items we get no answer:
> a <- eval(parse(text = paste(rep(1, 499), collapse = "+")))
> a
Error: Object "a" not found

And if this eval is passed to any other function, that function exits
without error and without returning and object.

So it seems that we've reached some upper limit of evaluation terms.
While the parser is able to correctly create the long expression, eval
does not successfully evaluate it.

My problem is that since the evaluator does not return an object, error,
or warning, I'm not able to easily code around this problem. Also, I've
thought of no easy way to "count" the terms in the expression to see
whether we've breached the upper limit or not. 

If I were able to see if the eval would work on a particular expression,
one thing I had considered was to make an eval.long wrapper that peels
terms off the right hand side of an overly-long expression until every
sub-expression is legal.

Thus, to count to 600 I could just add the first 497 terms with the next
103 terms.
>eval(parse(text = paste(rep(1, 497), collapse = "+"))) +
 eval(parse(text = paste(rep(1, 103), collapse = "+")))
[1] 600

But without an error or way of figuring out if the expression would even
be evaluated, I'm not sure how to know when to start or stop the peeling
process. It also may become more complicated when parentheses are
introduced.

Any help would be greatly appreciated.

Thanks,
Robert

platform i386-pc-mingw32
arch     i386           
os       mingw32        
system   i386, mingw32  
status                  
major    2              
minor    0.1            
year     2004           
month    11             
day      15             
language R              

Robert McGehee
Geode Capital Management, LLC
53 State Street, 5th Floor | Boston, MA | 02109
Tel: 617/392-8396    Fax:617/476-6389
mailto:robert.mcgehee at geodecapital.com



This e-mail, and any attachments hereto, are intended for use by the
addressee(s) only and may contain information that is (i) confidential
information of Geode Capital Management, LLC and/or its affiliates,
and/or (ii) proprietary information of Geode Capital Management, LLC
and/or its affiliates. If you are not the intended recipient of this
e-mail, or if you have otherwise received this e-mail in error, please
immediately notify me by telephone (you may call collect), or by e-mail,
and please permanently delete the original, any print outs and any
copies of the foregoing. Any dissemination, distribution or copying of
this e-mail is strictly prohibited.



More information about the R-devel mailing list