В моем случае я хотел один лайнер, который мог бы запускаться из командной строки (фактически через Makefile).Вот пример установки «VGAM» и «пера», если они еще не установлены:
R -e 'for (p in c("VGAM", "feather")) if (!require(p, character.only=TRUE)) install.packages(p, repos="http://cran.us.r-project.org")'
Изнутри R это будет просто:
for (p in c("VGAM", "feather")) if (!require(p, character.only=TRUE)) install.packages(p, repos="http://cran.us.r-project.org")
Здесь ничего нетпредыдущие решения, за исключением того, что:
- Я держу его в одной строке
- Я жестко кодирую параметр
repos
(чтобы избежать всплывающих окон, спрашивающихиспользуемое зеркало) - Я не удосужился определить функцию, которая будет использоваться в другом месте
Также обратите внимание на важное значение character.only=TRUE
(без него require
попытается загрузить пакет p
).