2011-01-21 42 views
9

我已经在R中开发了一个大函数库。 目前我只是在所有脚本开始时加载(“源”)函数。R包和执行时间

我看到我可以创建包。

我的问题是:这会改善我的功能执行时间? (通过将解释器代码转换为机器语言?)

软件包创建有什么作用?它会创建二进制文件吗?

感谢 弗雷德

回答

14

没有的R编译器还 包装你的R代码里面将没有大量提高其执行时间。它也不会为你创建二进制文件 - 你需要从软件包压缩包(或者获取CRAN或类似文件为你构建它们)来构建这些二进制文件。现在有一个字节编译器用于R和R的包,现在默认字节编译。速度的提高一般都不高 - 不要指望像C一样的速度。

包装R代码只是做到了;它将R代码,要编译的代码(C Fortran等),手册页,文档,测试等打包成可分发给用户并在多种体系结构上安装/构建的标准格式。

软件包可以利用延迟加载等功能,使R对象(您的函数说)只在需要时加载,而源代码将它们全部加载到全局环境中(默认情况下)。

如果你不打算分发你的代码,那么封装仅仅是为了你自己的使用而带来的好处,但是如果你打包并编写文档和例子/测试,可能会提醒你软件包代码的改变这会破坏示例或导致测试失败。通过这种方式,您可以更好地了解代码的可靠性,即使只有您使用它!

+3

构建一个包很有趣,它会“强制”你记录你的函数(如果你还没有这样做的话)。这些文档很容易通过help()获得,这是我喜欢关于R的主要内容之一 - 帮助永远不会太远或者模糊。 – 2011-01-21 12:40:29