【发布时间】:2014-08-07 04:02:15
【问题描述】:
我在 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)没有帮助。当我完全停用编译器包时,根本没有弹出任何注释,所以这可能是我对编译器包/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 调用之后直接
【问题讨论】:
-
如果你定义了
.Data,你可以隐藏这些注释(例如在你的脚本开头添加.Data <- NULL)。我不完全确定为什么在这里发布它,所以也许其他人可以确认这是一个保存的事情。 -
是的,没错,我在 link 找到了类似的答案,但有趣的是,当我停用编译器或 jit(3) 时,这些消息不会出现。链接线程中的解决方法会在环境中创建变量。我认为那不适合打包吗?这感觉与编译器有关还是我错过了什么?谢谢你的帮助! :)
-
@Marc 你有没有找到解决办法?
-
我在编译器包中遇到了同样的问题,它在 Spark pipe() 情况下使用它时出现在左侧字段中,我一直无法找到任何解决方案。