Как работает загрузка lazydata при установке пакета R? - PullRequest
0 голосов
/ 27 января 2019

Я хочу предоставить данные, которые уже опубликованы в моей директории data / моего скелета пакета R.См. Эту ссылку для ознакомления с основами совместного использования внешних данных: http://r -pkgs.had.co.nz / data.html .

Мои данные хранятся в формате .txt.Если вы не хотите загружать данные с помощью отложенной загрузки, которая будет просто загружена путем загрузки требуемого пакета R (myRpackage) и затем выполнения данных (datasetName) ... вы можете читать данные в обычном режиме, используя многие из прочитанныхФункции .table (), read.csv2 () в базе R.

В этом примере мой набор данных называется "ключ к публикации" и может быть загружен, как показано ниже, что прекрасно работает:

tmp = read.table("/dir/to/R/package/data/publishedData.txt", sep="\t", header=TRUE)

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

Downloading GitHub repo myGitRepo/myRpackage@master
from URL https://api.github.com/repos/myGitRepo/myRpackage/zipball/master
Installing myRpackage
library='/Library/Frameworks/R.framework/Versions/3.5/Resources/library' -- 
install-tests 
* installing *source* package ‘myRpackage’ ...
** R
** data
*** moving datasets to lazyload DB
Error in scan(file = file, what = what, sep = sep, quote = quote, dec = 
dec,  : 
  line 1 did not have 215 elements
ERROR: lazydata failed for package ‘myRpackage’
* removing 
‘/Library/Frameworks/R.framework/Versions/3.5/Resources/library/myRpackage’
Installation failed: Command failed (1)

Обратите внимание, что вышеприведенное Github-репо нереально.Я пишу общий пост, поэтому не пытайтесь самостоятельно установить этот поддельный пакет R.

Мой вопрос: Как отладить загрузку lazydata, когда я не знаю, как выполняется загрузка lazydata?то есть, какой код решает, если данные в моем опубликованном Data.txt в моей папке data / A-OK, а не «Нормально»?Я знаю, что они используют scan (), но он должен знать, что sep = "\ t" в файле .txt, и кроме этого, я не уверен, что его отключает?

Вещи, которые я 'мы попробовали:

  1. Я вычистил имена своих заголовков как можно лучше (например, удалив не алфавитные символы из строк столбцов или строк).

  2. Я также удалил любой другой столбец, кроме столбца с именами строк, который содержит строковые данные вместо числовых данных, на случай, если для stringsAsFactors по умолчанию установлено значение TRUE при загрузке лазиданных данных (чтобудет сильно тормозить)

  3. Кроме того, я перезапускал R после каждой попытки переустановки ...

1 Ответ

0 голосов
/ 27 января 2019

Хорошо, так что я нашел способ заставить это работать, без необходимости на самом деле понимать, что его отключало.

Скажите, что ваш набор данных загружается с помощью read.table (), но не переустанавливаетсяс нагрузкой lazydata, как описано выше.Скорее всего, ваши заголовки / имена строк отключены.Быстрое решение состоит в том, чтобы просто сделать это:

# Load your data into R the way it works
tmp = read.table("/dir/to/R/package/data/publishedData.txt", sep="\t", header=TRUE)
# Write data to same file with these arguments
write.table(tmp, file="/dir/to/R/package/data/publishedData.txt", sep="\t", row.names = TRUE, col.names = TRUE)

Затем обновите репозиторий Github с помощью git и попробуйте переустановить пакет R.Это сработает на этот раз!Разница в файле .txt заключалась в заголовке столбцов col.names - первый «столбец» не имеет метки, связанной с именами строк.Это просто начинается с col.name для столбца 1 вашей матрицы данных.Затем в строке 2 начинается имя строки для строки 2, затем идут все данные.Технически, в строке 1 содержится на 1 элемент меньше, чем в строке 2, если анализировать эти данные другим способом.

Надеюсь, это поможет кому-то еще.: -)

...