我在Ubuntu 14上使用R 3.0.2。我在代码中进行了一些繁重的计算,并尝试了
的“编译器”包compilePKGS(enable=TRUE)
enableJIT(3)
它似乎加快了我的代码。非常好!
但每次我的包启用“编译器”时,我都会收到很多笔记,比如
Note: no visible binding for global variable '.Data'
或与我自己的S4对象类似的东西(代码中的“obj @ result”):
Note: no visible binding for global variable 'result'
,例如,自制S4对象的一部分。添加setCompilerOptions("suppressAll", TRUE)
或setCompilerOptions("suppressUndefined", TRUE)
没有帮助。当我完全停用编译器包时,根本不会弹出任何注释,所以这可能是我对compiler-package / jit的理解有问题吗?
如何抑制这些音符?
编辑:
require(compiler)
compilePKGS(enable=TRUE)
enableJIT(3)
setClass(Class = "testobject",
slots = c( data = "numeric",
test = "character",
split = "numeric",
name = "character"
)
)
a <- new("testobject", data=c(1,2,3,4), test="TEST", split=5, name="NAME")
for(i in a@data){
print(i)
}
简单的例子产生
Note: no visible binding for global variable '.Data'
Note: no visible binding for global variable '.Data'
直接在ClassDefinition Call之后
答案 0 :(得分:7)
您可以使用
从R中删除这些音符 setCompilerOptions(suppressAll = TRUE)
无需单独抑制&#34; undefined&#34;选项,压制&#34;所有&#34;会做。或者,您可以设置环境变量
export R_COMPILER_SUPPRESS_ALL=true
(或类似地在不同的操作系统下)。
如果您只想抑制有关编译器未定义或似乎未定义的变量的警告,您可以
setCompilerOptions(suppressUndefined=TRUE)
如果您只想为变量.Data
执行此操作,则可以执行
setCompilerOptions(suppressUndefined=".Data")
。
另请注意,使用编译器加速代码时无需启用软件包编译,只需启用JIT即可。您可以在示例中从R执行此操作,或者只设置另一个变量
export R_ENABLE_JIT=3
要启用最积极的优化,您还可以设置
export R_COMPILER_OPTIMIZE=3
或来自R run setCompilerOptions(optimize=3)
通过环境变量启用JIT编译时,您不必显式加载编译器包 - 它将自动完成。
答案 1 :(得分:3)
您可以使用例如
来定义全局变量utils::globalVariables(".Data")
这将阻止“全局变量无可见绑定”注意。
这有利于抑制所有编译器消息的目标;你不会压制其他有用的编译器消息。