【问题标题】:R alternative to install.packages() functionR 替代 install.packages() 功能
【发布时间】:2017-04-20 01:51:01
【问题描述】:

R.home() 路径被锁定且不完整(没有etc,没有bin,只有library?)时,是否有任何关于在用户库中手动安装包的文档?系统不支持脱壳出去执行R CMD,我相信标准R会这样做。

我想构建现有的源包(来自 CRAN)并安装到用户库目录中,这样我就可以使用 library() 函数并获取所有常用的命名空间以及 *.Rdx 和 *.Rdb 文件。

目前,我正在使用标准的 MacOS R 和 r 源代码来处理 install.packagestools::.build_packagetools:::.install.packages 源代码。希望这已以更用户友好的方式记录下来,而我的谷歌搜索却错过了它。

谢谢。

【问题讨论】:

  • 你试过用.libPaths("/new/path", .libPaths())手动设置路径吗?
  • 是的,谢谢,我有。问题是 R.home 目录被锁定并且不包含 R 通常用于构建或安装包的 etcbin 等中的脚本。该目录不可写。
  • 您建议的可能的 dup 似乎假设预编译的二进制文件可用(除非 *.Rdb*.Rdx 是可移植的)我使用的是 Unix 衍生产品。如果文件是可移植的,那么我可以使用 Mac 二进制文件并简单地更改描述中的 Built: 行以反映架构。

标签: r macos


【解决方案1】:

您不需要使用不同的install.packages 方法,而只需要指定一个可写的位置来存储包,并使其优先于系统默认位置。一个简单的方法是设置一个R_LIBS 环境变量。例如,在我的.bashrc 我有

export R_LIBS='/home/username/.local/lib/R-3.3.3'

然后,默认情况下,所有包都安装在这里。此外,安装在此处和系统范围位置的软件包在加载时将优先于此处的软件包。

您可以通过在 R 会话中检查 .libPaths() 来验证该位置是否正在使用。

【讨论】:

  • 谢谢,但我正在使用 R 的沙盒嵌入式版本(没有 bash、没有 .bashrc、没有环境变量),所以我无法设置这些。我在 .libPaths 上添加了一个可写目录。然后我在我的 Mac 上安装该软件包,将其 tar 和压缩并发送到嵌入式设备。这适用于不需要编译的包。
  • 但是,我必须自己管理依赖链。谢天谢地,你的 minicran 包!
猜你喜欢
  • 2016-03-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-06-14
  • 1970-01-01
  • 1970-01-01
  • 2012-05-07
相关资源
最近更新 更多