我的同事希望确保我们在R中的工作与平台无关,特别是代码将在Linux,Mac和Windows上运行,并且在一个系统上创建的文件将在其他系统上运行。
由于此问题已经出现在我的小组中,我希望得到一般性答案,这将使我更容易自信地向我的合作者保证不存在问题。例如,除了“因为(subject matter expert)如此说”之外,它将有助于提供参考。
我之前已经问过两个关于R创建的文件的跨平台可读性的问题:What are the disadvantages of using .Rdata files compared to HDF5 or netCDF?和Are R objects dumped using `dump` readable cross-platform?
答案 0 :(得分:4)
除了Carl的答案之外,明显的方式可以确保您在独立于平台的工作是在所有平台上进行测试。
这正是CRAN对其3800+套餐所做的,您可以访问日志here。
简而言之,R真的很难与平台无关,而且大多数都是成功的。要使用您的代码,您可以避免使用引入依赖关系的API或工具。看看像system.file(package="boot")
这样的抽象和他们使用的函数 - 你可以很容易地抽象出文件系统的“根”,并且分隔符已经被处理了。
答案 1 :(得分:2)
检查cran.r-project.org的包裹清单。每个软件包都有一个页面,告诉您它是否通过了不同操作系统的测试。此外,正如您所建议的那样,帮助文件非常明确地表示操作系统依赖性。 R是“聪明的”足以将“/”转换为路径名中的“/”,以便在Windows中工作的那些穷人。 一般来说,图形访问是最有可能具有平台依赖性的区域。显然,如果你的系统缺少{X11,ImageMagick,..},你仍然会被卡住。
答案 2 :(得分:2)
除了Carl和Dirk的评论之外,你应该明白任何需要从源代码编译的软件包(和Omegahat,Rforge或r-forge上的许多(所有?)软件包一样)都需要在一台机器上完成。适当的C和Fortran库。一些有趣的软件包依赖于GTK +和Tcl / Tk,可能需要确保您可以获得正确的版本。 Simon Urbanek维护的http://r.research.att.com/页面是用于跟上Mac支持资源的有用资源。