在R中加载(如果需要安装)包的便捷方式

时间:2015-02-05 12:54:18

标签: r

用户可以在许多PC上工作。无论运行什么PC,都可以运行良好的代码。假设有人不想依赖首选项和选项文件,那么确保加载包(并在需要时安装)的最佳方法是什么。

library命令很酷,但require命令要好得多。但即使require也没有完成任务。

触发不需要的重新安装(例如,在R studio中)会导致重新启动R会话的有趣提示 - 这就是为什么最好避免不必要的安装。

一个可能的技巧A是这样做(不是经常输入包名称)

doInstall <- T;toInstall <- c("downloader");
if(doInstall) install.packages(toInstall);
lapply(toInstall, library, character.only = T)

或更糟糕的伎俩B

if (!require(downloader)) {install.packages("downloader"); require(downloader)}

是否有&#34; 2015方式&#34;用一个命令做这件事 - 比如

justdoitall(c("downloader","dplyr"))

2 个答案:

答案 0 :(得分:1)

  

假设有人不想依赖偏好和选项文件

这排除了将任何内容放入.Rprofile或使用外部软件包,因此我们坚持使用基础R来解决您的问题。如果是这样的话那么答案就是你不能比你在问题中写的更好(我更喜欢B到A)

如果您愿意稍微弯曲并要求用户首先加载一个包(可以通过使用.Rprofile在启动时完成),那么有一些选项可以完全按照您的需要进行操作。

installr::require2pacman::p_load执行您的要求。披露:我是 pacman 的作者/维护者。我同意你的观点,即我们不应该依赖选项或外部文件,特别是如果我们计划共享代码。我每天都使用 pacman (它比使用安装/加载软件包有更多的用途)但是大多数情况下这些类型的函数应该被视为对交互式使用有用,但如果你想要便携式,可分享的代码,无需担心软件包是否可用,您将不得不求助于您的问题。

答案 1 :(得分:1)

以下是使用 pacman 方法安装软件包邮政编码的示例。

if (!require("pacman")) install.packages("pacman")
pacman::p_load(zipcode)