R的环境扩张

时间:2015-10-27 15:00:57

标签: r environment

我有一些问题,我不知道如何解决。 史前史:我使用R.NET进行计算(需要WPF应用程序)。所以,我想并行化我的应用程序,并为REngine类创建了动态代理。它需要序列化数据以通过TCP传递和接收来自REngine实例的数据。坏消息 - R.NET类无法序列化。所以,我有一个想法是在R中序列化R对象并在进程之间传递R序列化数据。

所以我有这样的脚本:

a <- 5;
b <- 10;
x <- a+b;

我需要像这样包装它:

wrapFunction <- function()
{
    a <- 5;
    b <- 10;
    x <- a+b;
}

serializedResult <- serialize(wrapFunction());

我将获得serializedResult并将其作为字节数组传递。我还需要通过环境。但是在这些操作之后,我不会在.GlobalEnv中获得a,b,x。 如何在我的.GlobalEnv中获取函数体中定义的所有变量? 我不知道名字和计数,我无法重写基本脚本,用“&lt;&lt; - ”替换“&lt; - ”。 其他方式?

谢谢。

1 个答案:

答案 0 :(得分:1)

我不确定我是否完全理解您的要求。他们似乎违背了R试图遵循的功能语言范式。以下内容可能有所帮助:

e <- new.env()
wrapFunction <- function(){
  with(e, {
         a <- 5;
         b <- 10;
         x <- a+b;
          })
}

wrapFunction()
e$a
#[1] 5

您当然可以使用.GlobalEnv代替e,但至少在R中会被视为更糟糕的做法。