Ошибка «объект не найден» при создании нового geom для пакета - PullRequest
1 голос
/ 20 февраля 2011

Полное раскрытие: эта проблема дублируется в ggplot2 группе Google

Я разрабатываю пакет, который интенсивно использует ggplot2. Я создал свой собственный geom - geom_rug_alt - как способ размещения полос коврика в верхней / правой части графика вместо местоположений по умолчанию.

Моя проблема в том, что, когда geom_rug_alt() определен и вызван в одном скрипте , кажется, что все в порядке. (Пожалуйста, попробуйте сами убедиться в этом.) Но в моем пакете geom_rug_alt() определен в одном файле (CommonFunctions.R) и вызван в другом (функция Residuals() большей функции foo.R). Когда я что-то вызываю foo.R, я получаю эту ошибку:

Error in geom_rug_alt(aes(x = NULL, y = within.group.residuals, color = factor(within.1.sd.of.the.mean.of.all.residuals)),  : 
object 'GeomRugAlt' not found

Теперь я сделал несколько вещей (предложенных Хэдли в этой теме ), чтобы убедиться, что geom_rug_alt() должен работать правильно в пакете:

  1. Я определяю GeomRugAlt как proto объект в файле, называемом CommonFunctions.R в моем пакете. CommonFunctions.R содержит строки 3-42 моего примера сценария .

  2. В CommonFunctions.R я обязательно включил строку build_accessor() для geom_rug_alt (строка 42 в моем примере сценария ) после определения GeomRugAlt

  3. В файле пакета DESCRIPTION у меня есть строка collate:, где CommonFunctions.R появляется первым

  4. В пакете DESCRIPTION файл у меня есть LazyLoad: false строка
  5. В CommonFunctions.R я включил require(ggplot2) вызов до определения GeomRugAlt как proto объекта.
  6. В foo.R я включил require(ggplot2) вызов перед тем, как позвонить geom_rug_alt() в Residuals().

Я не уверен, что еще мне не хватает. Учитывая, что мой пример сценария работает нормально, я подозреваю, что проблема не в том, что мой geom не работает, а в том, что я делаю что-то не так в рамках процесса разработки пакета.

Извините за дублирование проблемы, но я не могу найти полное решение проблемы: - (

1 Ответ

1 голос
/ 20 февраля 2011

Поместите export(GeomRugAlt) в файл NAMESPACE.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...