6

我的同事希望确保我们在 R 中的工作是独立于平台的,特别是代码可以在 Linux、Mac 和 Windows 上运行,并且在一个系统上创建的文件可以在其他系统上运行。

由于这个问题以前在我的小组中出现过,我希望得到一个一般性的答案,这将使我更容易自信地向我的合作者保证不会有问题。例如,除了“因为(主题专家)这么说”之外,还有其他参考资料会有所帮助。

  1. 一般来说,有没有办法知道 R 的任何特性是否是特定于平台的(我可以假设这将在函数的帮助中说明)?
  2. 是否有我可以确信将独立于平台的包或功能?
  3. 我应该警惕哪些类型的包或功能?

我之前问过两个关于 R 创建的文件的跨平台可读性的问题:与 HDF5 或 netCDF 相比,使用 .Rdata 文件有哪些缺点?R 对象是否使用“转储”可读的跨平台转储?

4

3 回答 3

4

除了卡尔的回答之外,确保您的工作独立于平台的明显方法是在所有平台上进行测试。

这正是 CRAN 对其 3800 多个软件包所做的事情,您可以在此处访问日志。

简而言之,R 真的很努力地独立于平台,并且大部分都成功了。要对您的代码执行此操作,您应该避免使用引入依赖关系的 API 或工具。看看抽象类system.file(package="boot")和它们使用的函数——您可以轻松抽象文件系统“根”,并且已经处理了分隔符。

于 2012-06-01T16:26:15.937 回答
2

检查 cran.r-project.org 以获取软件包列表。每个包都有一个页面,它会告诉您它是否通过了针对不同操作系统的测试。此外,正如您所建议的,帮助文件非常明确地说明了操作系统的依赖关系。对于那些在 Windows 中工作的可怜人来说,R 足够“聪明”,可以将路径名中的“/”转换为“\”。一般来说,图形访问是最有可能具有平台依赖性的领域。显然,如果您的系统缺少 {X11, ImageMagick, ..} 您无论如何都会被卡住。

于 2012-06-01T16:21:43.550 回答
2

Besides Carl's and Dirk's comments, you should understand that any package that requires compilation from source (as do many (all?) packages that are on Omegahat, Rforge or r-forge) will need to be done on a machine that has the proper C and Fortran libraries. Some interesting packages depend on GTK+ and Tcl/Tk, and there may be a need to make sure you can get the right versions. The http://r.research.att.com/ page that Simon Urbanek maintains is a useful resource for keeping up with supporting resources for Macs.

于 2012-06-01T16:51:19.493 回答