R:将多个库位置与最新的包组合在一起

Tre*_*est 6 packages r

问题:如何将所有最新的R软件包移动到一个简单的位置,R(和其他所有内容)将从现在开始使用我的软件包?

我一直在玩Ubuntu 10.04上的R,使用各种RGedit,RCmdr,R shell和RStudio.同时,我已经安装通过apt,突触,install.packages(),等等.这显然意味着这些包得到安置无处不在,(与偶尔的须藤扔在)与不同的包,更新包,并重新更新包权限.

目前我有不同版本的不同(和重复)包:

/home/me/R/i486-pc-linux-gnu-library/2.10
/home/me/R/i486-pc-linux-gnu-library/2.14
/home/me/R/i486-pc-linux-gnu-library/
/usr/local/lib/R/site-library               
/usr/lib/R/site-library                     
/usr/lib/R/library 
Run Code Online (Sandbox Code Playgroud)

首先 - 我是单个用户,在一台机器上 - 我不想要多个库位置,我只是希望它能够工作.

第二 - 我的连接速度非常慢,并且不能一直重复下载包.

那么 - 有一种简单的方法可以将所有这些库位置合并到一个简单的位置吗?我可以将文件夹复制过来吗?

我如何在具体情况下设置它并且始终是R相关查找和更新包的地方?

这令人抓狂.

谢谢你的帮助.

Tom*_*mmy 7

是的,它几乎可以复制文件夹.但是没有NAMESPACE文件的2.14之前的软件包可能无法在R 2.14中运行,其中所有软件包都必须具有命名空间...

如果您有多个版本,您需要手动确保只复制每个软件包的最新版本...

如果您输入.libPaths(),它会告诉您R在哪里查找包裹.列表中的第一个是通常安装新软件包的位置.我怀疑.libPaths()可能会从RStudio和Rcmd等返回不同的东西.


Tre*_*est 4

将各种信息拼凑在一起后,这里是: R 包目录组织的完整白痴指南:

NB1 - 这是我使用 Ubuntu 的经验 - 你的体验可能会有所不同 NB2 - 我是一台机器上的单个用户,我喜欢简单的事情。

Ubuntu 将通过 apt 或 synaptic 安装的任何内容放入:

/usr/lib/R/site-library                     
/usr/lib/R/library
Run Code Online (Sandbox Code Playgroud)

目录。默认的 vanilla R 安装将尝试在此处安装软件包:

/usr/local/lib/R/site-library
Run Code Online (Sandbox Code Playgroud)

由于这些是系统目录,用户没有写入权限,根据您与 R 交互的方法,您可能会收到友好的提示 - “嘿伙计 - 我们不能在那里写入,您希望我们将您的包放入其中你的主目录?” 这看起来天真且合理……假设你从不改变你的 GUI 或你的工作环境。如果这样做,新的 GUI/环境可能不会在放置包的目录中查找,因此不会找到它们。(大多数界面都有一种方法可以让你指出你的个人包库的位置,但谁愿意在配置文件中乱搞呢?)

对于我来说,在 Ubuntu 上使用默认安装设置的最佳实践(如果我错了,请随时纠正我)似乎是从基本 R shell 作为 sudo 进行任何包管理:> sudo R然后从那里执行你的install.packages()voodoo 。这似乎将包放入usr/local/lib/R/site-library目录中。

同时,会更新和目录update.packages()中的文件,以及/usr/lib/R/site-libraryusr/lib/R/libraryusr/local/lib/R/site-library

(至于usr/lib/R/分区,看起来/library/有核心包,同时/site-library/包含任何添加的内容,假设它们是由 apt 安装的......)

以前安装在错误位置的任何软件包都可以通过移动目录(感谢@Tommy)移动到该目录/usr/local/lib/R/site-library(假设您正在sudo使用它),但usr/lib/R/由 apt 控制 - 最好不要从那里添加或删除任何内容。 。

呼。无论如何 - 足够简单,并且用简单的语言。感谢大家的帮助。