对于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的变量?
答案 0 :(得分:2)
我认为你会发现原因来自R中ls
函数的默认行为,它不会返回以点开头的对象。这可以通过all.names
参数修改:
all.names
一个逻辑值。如果为TRUE,则返回所有对象名称。如果为FALSE,则以a开头的名称。被省略。
更多技术功能或变量被隐藏&#34;这是很常见的。以这种方式,例如.Machine
,.Options
,.Fortran
,.dynLibs