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

How to put functions into Rserve workspace?

我尝试使用 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 work-space 中定义的函数不在 Rserve 的 work-space 中。所以,我的问题是:是否可以在 R 中定义一个函数,然后使其对 Rserver 可见,以便 Rserve 可以提供这些功能?

Is it possible to define a function in R and then make it visible to Rserver so that Rserve can serve these functions?

当然是。你 "just" 告诉 Rserve

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

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