Переместите пакеты r на новый компьютер, у которого нет интернета
Обычно я устанавливаю пакеты, используя:
install.packages("foo")
и репо через Интернет. Но теперь у меня есть новая машина, где я хочу реплицировать пакеты из моей существующей установки, не перетаскивая все из Интернета снова и снова. (У меня много пакетов и медленный доступ в Интернет)
Обе машины - это Windows и имеют ту же версию R. (2.13.1)
Есть ли способ сделать это? Ближе всего я могу получить, я знаю, что могу установить из локальных файлов zip, используя:
install.packages("pathtozip", repos = NULL)
Но все-таки R хранит все Zips? Я нашел несколько в таких местах, как:
C:\Documents and Settings\foouser\Local Settings\Temp\RtmpjNKkyp\downloaded_packages
Но не все.
Какие-нибудь советы?
Ответы
Ответ 1
Функция .libPaths
даст вам вектор всех библиотек на вашем компьютере. Запустите это на своей старой машине, чтобы найти все. Вы можете просто скопировать все эти файлы в библиотеки на вашем новом компьютере (запустите .libPaths
, чтобы узнать, где).
В качестве альтернативы, если вы хотите настроить реальный репозиторий (т.е. в основном зеркало CRAN) на своем компьютере или на сетевом диске, который вы можете обновить, вы можете поместить двоичные или исходные пакеты в папку и запустить tools::write_PACKAGES
на этом папка. Вы можете запустить install.packages
с помощью аргумента contriburl
и указать его в папку вашего репозитория.
Ответ 2
Все установленные вами пакеты хранятся в папке с именем win-library\r-version, например,
C:\Users\Ehsan\Documents\R\win-library\2.15, поэтому достаточно скопировать все папки внутри 2.15 в одну и ту же папку на вашем новом компьютере. потому что у вас есть одна и та же версия R, вам не нужно обновлять их с помощью update.packages().
Ответ 3
На исходном компьютере запустите
write.csv(unique(data.frame(installed.packages())[,1]),"packages.csv",row.names=F)
Сохраните этот .csv в рабочий каталог вашего нового компьютера, затем запустите
install.packages(as.character(read.csv("packages.csv")[,1]))
Вы можете проверить, что ваш рабочий каталог использует getwd()
.