如何将函数放入Rserve工作区?

时间:2016-08-10 13:08:47

标签: r tableau workspace rserve

我尝试使用Tableau中的Rserve。我能够执行以下代码:

SCRIPT_REAL(".arg1*.arg2", MAX([Price]), [TestParam])

基本上,我在Tableau中编写R代码(在我的情况下为".arg1*.arg2")并将其发送给Rserve。反过来,Rserve接受代码,执行代码并将结果发送回Tableau。

现在我尝试做同样的事情,但是在R环境中定义一个函数并通过Rserve从Tableau访问它。所以,我在R中执行以下内容:

> myfunc <- function(x, y) {x*y}
> library(Rserve)
> Rserve()

这意味着我在R环境中定义了一个函数,然后在相同的环境中启动Rserve,希望Rserve能够看到我之前定义的函数。

然后在Tableau中,我使用以下代码定义一个新列:

SCRIPT_REAL("myfunc(.arg1,.arg2)", MAX([Price]), [TestParam])

如您所见,我尝试调用我在R中定义的函数(myfunc)。

因此,我收到一条错误消息,告诉我找不到myfunc

通过探索网络,我发现它是期望的,因为R工作空间中定义的函数不在Rserve的工作空间中。所以,我的问题是:是否可以在R中定义一个函数,然后让它对Rserver可见,以便Rserve可以提供这些功能?

1 个答案:

答案 0 :(得分:1)

  

是否可以在R中定义一个函数,然后让它对Rserver可见,以便Rserve可以为这些函数提供服务?

当然是。你“只是”告诉Rserve

  • 使用函数来源文件(不推荐,继续阅读)
  • 根据需要加载一个或多个库(推荐,也适用于本地代码)

就像与任何其他R会话一样,因为这是Rserver提供的:无头R会话。