Подтвердить что ты не робот

Переместите пакеты 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

Но не все.

Какие-нибудь советы?

4b9b3361

Ответ 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().