[R] is there an equivalent for #ifdef (C langage) in R

William Dunlap wdunlap at tibco.com
Thu Jan 12 18:12:13 CET 2012


You could put your debug-only code into a function calls like
   ifDebug(diagnosticPlot(c))
and
   ifDebug({
        tmp <- timeConsumingFunction(c)
        stopifnot(tmp < 1.0)
   })
When you want debug output define ifDebug as
   ifDebug <- function(expr) force(expr)
and when you don't want it define it as
   ifDebug <- function(expr) NULL
Because of lazy evaluation, the expression won't get evaluated
in the latter case.

Bill Dunlap
Spotfire, TIBCO Software
wdunlap tibco.com 

> -----Original Message-----
> From: r-help-bounces at r-project.org [mailto:r-help-bounces at r-project.org] On Behalf Of ikuzar
> Sent: Thursday, January 12, 2012 7:37 AM
> To: r-help at r-project.org
> Subject: [R] is there an equivalent for #ifdef (C langage) in R
> 
> Hi,
> I'd like to know if there is an equivalent for #ifdef (Clangage) in R. I 'd
> like to do something like:
> 
> useDebug = defmacro(DEBUG, expr=(DEBUG==1))
> 
> if(useDebug(0)){
>     #Here I do not use debug mode
>      make_addition = function(a, b) {
>         c=a+b
>         plot(c)
>         return(c)
>     }
> }else{
>   #here I use debug mode
>      c=a+b
> }
> 
> I assume this would work... The problem is :
>  if I have 15 lines of code in if{ } bloc I have to copy and paste these15
> lines into else{} bloc. These is too many lines in my file...
> 
> Is there something like (in C langage):
> 
> #define DEBUG  1
> 
> #ifndef DEBUG
>    make_addition = function(a, b) {
> #endif
> #ifdef DEBUG
>    a = 1
>    b = 2
> #endif
>    c=a+b
>    plot(c)
> #ifndef DEBUG
>         return(c)
>     }
> #endif
> 
> my goal is to run my program  WITHOUT calling my_addition(1, 2) (for
> debugging).  The main problem : all variables do not exist when just running
> my _file.R   ,  I have to call my_function if I want to see results.
> 
> I use RStudio
> 
> Thanks for your help
> 
> 
> --
> View this message in context: http://r.789695.n4.nabble.com/is-there-an-equivalent-for-ifdef-C-
> langage-in-R-tp4289356p4289356.html
> Sent from the R help mailing list archive at Nabble.com.
> 
> ______________________________________________
> R-help at 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.



More information about the R-help mailing list