【问题标题】:Are there features of R that are system-dependent?R 是否存在依赖于系统的功能?
【发布时间】:2012-06-06 20:36:03
【问题描述】:

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

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

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

我之前问过两个关于R创建的文件的跨平台可读性的问题:What are the disadvantages of using .Rdata files compared to HDF5 or netCDF?Are R objects dumped using `dump` readable cross-platform?

【问题讨论】:

    标签: r interop operating-system


    【解决方案1】:

    除了 Carl 和 Dirk 的 cmets,您应该了解任何需要从源代码编译的包(就像 Omegahat、Rforge 或 r-forge 上的许多(全部?)包一样)需要在具有适当的 C 和 Fortran 库。一些有趣的包依赖于 GTK+ 和 Tcl/Tk,可能需要确保您可以获得正确的版本。 Simon Urbanek 维护的 http://r.research.att.com/ 页面是一个有用的资源,可用于跟上 Mac 的支持资源。

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

        【解决方案3】:

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

        【讨论】:

        • 值得注意的是函数file.path()是构建平台无关文件路径的关键。
        • @OP:关于文件路径的主题,请注意尾随斜杠(有时)在 Windows 中无效。 file.exists(normalizePath("~")) 返回 TRUEfile.exists(normalizePath("~/")) 返回 FALSE。在 Linux 上两者都是 TRUE
        猜你喜欢
        • 2011-05-08
        • 2021-04-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-12-31
        • 1970-01-01
        • 2017-01-16
        • 1970-01-01
        相关资源
        最近更新 更多