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

Henrik Bengtsson hb at biostat.ucsf.edu
Fri Jan 13 00:09:05 CET 2012


You could generate an R script using an RSP template 'main.R.rsp' containing:

<% DEBUG <- TRUE %>

<% if (!DEBUG) { %>
  make_addition = function(a, b) {
<% } %>
<% if (DEBUG) { %>
  a = 1
  b = 2
<% } %>
  c=a+b
  plot(c)
<% if (!DEBUG) { %>
       return(c)
   }
<% } %>

which you can compile into 'main.R' using R.rsp::rsp("main.R.rsp").
You can compile and run it in one go by:

source(R.rsp::rsp("main.R.rsp"))

Changing DEBUG to FALSE generates the alternative main.R file.  Note
that the *.R.rsp file is not parsed by R, so it is only the generated
main.R that has to be valid before it is passed to source().

My $.02

/Henrik

On Thu, Jan 12, 2012 at 7:36 AM, ikuzar <razuki at hotmail.fr> wrote:
> 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