R中的虚线参数名称和/或变量

时间:2014-04-25 10:39:00

标签: ruby json r rstudio opencpu

对于Ruby项目,我需要一个OpenCPU服务器来处理R包的一些统计信息。 OpenCPU有一个JSON REST API,所以使用Ruby我可以很容易地用它来与R进行通信。到目前为止,非常好。

其中一个软件包有一个奇怪的(至少对我来说)语法。

add <- function(.argument1, .argument2) {
  return(.argument1 + .argument2)
}

所以这只是一个例子,而不是实际的功能。我发现奇怪的部分是参数前面的那些点。当我建议删除这些点时,程序包的开发人员说它是为了隐藏IDE(R-Studio)中变量概述中的变量。听起来我觉得他想制作参数,我们称之为私人,或至少以某种方式对其进行范围调整。我搜索了互联网来解释R的这个特征,但一无所获。

实际问题是:我们使用Ruby,Ruby将数据转换为JSON并将其发送到OpenCPU。 OpenCPU查找正确的包/函数,传递参数并执行它。然后它返回到OpenCPU,它发出JSON响应。我们更喜欢使用的Ruby&lt; 1.9&lt; 1.9 Hash语法如下所示:

{ argument1: 4, argument2: 3 }.to_json
# => { "argument1": 4, "argument2": 3 }

而不是由包参数强制使用的旧版本:

{ ".argument1" => 4, ".argument2" => 3 }.to_json
# => { ".argument1": 4, ".argument2": 3 }

因此,在绝望地寻找一个说服R开发人员不要使用这些点的论点时,我的问题仍然没有答案:参数前面的这一点在R中是否具有真正的功能还是只是一个黑客排除来自IDE的变量?

1 个答案:

答案 0 :(得分:2)

我认为你会发现原因来自R中ls函数的默认行为,它不会返回以点开头的对象。这可以通过all.names参数修改:

  

all.names一个逻辑值。如果为TRUE,则返回所有对象名称。如果为FALSE,则以a开头的名称。被省略。

更多技术功能或变量被隐藏&#34;这是很常见的。以这种方式,例如.Machine.Options.Fortran.dynLibs