我尝试使用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可以提供这些功能?
答案 0 :(得分:1)
是否可以在R中定义一个函数,然后让它对Rserver可见,以便Rserve可以为这些函数提供服务?
当然是。你“只是”告诉Rserve
就像与任何其他R会话一样,因为这是Rserver提供的:无头R会话。