【问题标题】:How to put functions into Rserve workspace?如何将功能放入 Rserve 工作区?
【发布时间】:2016-08-10 13:08:47
【问题描述】:

我尝试使用 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 可以为这些函数提供服务?

【问题讨论】:

  • 我不是 Rserve 专家,但我猜你需要将它变成一个包并安装在系统库中(不在 $HOME 下)。跨度>

标签: r tableau-api workspace rserve


【解决方案1】:

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

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

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

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

【讨论】:

  • 感谢您的回答。我需要承认我对 R 很陌生。所以,我不知道如何“电话”Rserve。特别是,如何使用函数获取文件或如何将我的函数放入我的库中。创建自己的(本地)库很难吗?
  • 不是,但在评论中提问并不是最好的学习方式。我刚刚搜索了“如何创建 R 包”,获得了 1.4 亿(点击),包括一个流行教程的关键要点。这是值得学习的东西。这里还有数百个相关问题(和答案!)。
  • 在我写评论之前,我也用谷歌搜索了一个 19 页的 pdf。我写评论的原因是我假设(希望)只有一个“神奇”命令(一行代码)我可以使用它来获取我的文件(或创建一个库)并且一切都会正常工作。如果是这样的话,我认为在这里问这个问题是有道理的。特别是考虑到我有时间压力,没有时间阅读 20 页的文件(很遗憾)。
  • 是的。神奇的单一命令是library(mypackage)。是的,它希望您学习如何编写一个库,以便让事情神奇而可靠地工作。这就是你所追求的,不是吗?
  • 我实际上选择了第一个选项(使用该函数获取文件),因为它看起来更容易实现。我尝试在导入和启动 Rserve 之前进行采购。我还将source C:\Users\myname\Documents\test.R 放入C:\Program Files\R\R-3.2.2\library\Rserve\libs\x64\Rserve.cfg 文件中。它也不起作用。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-10-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-12
相关资源
最近更新 更多