[Rd] setting environmental variable inside R function to call C function

Barry Rowlingson b.rowlingson at lancaster.ac.uk
Tue Jun 3 20:06:13 CEST 2014


What does c_fun look like? Here's mine:

#include <stdio.h>
#include <stdlib.h>
void c_fun(){
  printf("TMP is %s\n", getenv("TMP"));
    }

and I then do this at the shell prompt:

R CMD SHLIB c_fun.c

and this at the R prompt:

dyn.load("c_fun.so")
wrapper()

and I get:

> wrapper()
[1] "A"
TMP is A
list()

Is that not what you want?

tldr; works for me.


On Tue, Jun 3, 2014 at 5:55 PM, Bowen Meng <bowen.m04 at gmail.com> wrote:
> wrapper <- function(){
>   Sys.setenv(TMP="A")
>   print(Sys.getenv("TMP"))
>
>   .C("c_fun")
> }
>
>
> As the example above, I hope to set an env var $TMP inside the R function
> "wrapper", which affects the functionality of the C function call "c_fun".
> Also the print line shows that $TMP is set to be "A", but the function call
> of "c_fun" was not affected.
>
> Does anyone know why and how to correctly set the env var for subsequent
> functions?
>
> Thanks,
> BW
>
>         [[alternative HTML version deleted]]
>
> ______________________________________________
> R-devel at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel



More information about the R-devel mailing list