Р - Что означает "неполный блок в файле"?

Я использую RStudio и пытаюсь использовать пакет с моим текущим проектом. Я нажимаю флажок "Использовать пакет с этим проектом" и нажимаю "ОК", где я получаю следующий вывод из консоли:

    > packrat::init()
Initializing packrat project in directory:
- "/Users/Ash/Dropbox/Uni/2014/Thesis/Code/R"

Adding these packages to packrat:
            _         
    packrat   0.4.0.12

Fetching sources for packrat (0.4.0.12) ... Error in snapshotSources(project, activeRepos(project), allRecordsFlat) : 
  Errors occurred when fetching source files:
Error in untar2(tarfile, files, list, exdir, restore_times) : 
  incomplete block on file

Я не могу найти много об этой ошибке, но на основе этого кода (поиск строки ошибки, неполный блок в файле), кажется, это связано с неожиданной длиной / размером файла.

Я предполагаю, что загрузка может быть повреждена? Но я пробовал несколько раз.

Или, возможно, у меня нет правильных разрешений? Но файл проекта не должен иметь проблем здесь.

У кого-нибудь еще была эта проблема?

1 ответ

Решение

Я предполагаю, что загрузка может быть повреждена? Но я пробовал несколько раз.

Да. Загрузка может быть повреждена или, согласно этой теме в списке рассылки справки R, проблема может быть вызвана повреждением пакета на самом сервере. В последнем случае это можно решить, выбрав другое зеркало для загрузки пакета.

ПРИМЕЧАНИЕ. Я опишу решение, которое использует R-консоль вместо Rstudio GUI, потому что я использовал для установки пакетов таким образом. Описанный подход, вероятно, может работать и с установками пакетов из GUI.

Когда вы устанавливаете пакет из консоли R, выполнив:

> install.packages("<package_name>")

Вам предоставляется список доступных зеркал на выбор:

 1: 0-Cloud [https]                2: Austria [https]
 3: Chile [https]                  4: China (Beijing 4) [https]
 ...

Просто выберите другой (желательно один рядом с вашим местоположением, чтобы ускорить загрузку).


Если у вас нет такого выбора, но загрузка начинается сразу же, у вас настроено зеркало по умолчанию (например, Rstudio автоматически устанавливает https://cran.rstudio.com/ по умолчанию). Вы можете проверить выбранное зеркало, выполнив:

> getOption("repos")["CRAN"]
                       CRAN
"https://cran.rstudio.com/"

Для сброса зеркала по умолчанию вы можете использовать следующие команды:

> r <- getOption("repos")
> r["CRAN"] <- "@CRAN@"
> options(repos=r)

Теперь, когда вы пытаетесь установить новый пакет, вы можете выбрать другое зеркало, как описано выше.

Отвечая через миллион лет... Но если кто-нибудь попадет сюда, как я, ища Error in untar2(tarfile, files, list, exdir, restore_times) : incomplete block on file, ваша проблема может быть связана с наличием в вашем коде приватных пакетов.

Следуйте этой теме. Последний комментарий спас мне жизнь.

Вам нужно создать tar.gz из ваших собственных частных пакетов и сохранить его в уникальной папке. Оттуда просто запустите этот код:

packrat::set_opts(local.repos = "path/to/the/folder/with/your/tar.gz/files")
packrat::install_local('yourpackage')

После этого запустить снова packarat::init() И это снова будет счастливый день.

Другие вопросы по тегам