我有一些问题,我不知道如何解决。 史前史:我使用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; - ”。 其他方式?
谢谢。
答案 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中会被视为更糟糕的做法。