Создание пакета R с devtools и функцией «use_rcpp» указывает мне скопировать строки кода в файл, который не существует - PullRequest
0 голосов
/ 10 октября 2019

Я пытаюсь создать небольшой тестовый пакет R просто для ознакомления с рабочим процессом. Я следовал учебному пособию, найденному здесь: https://r -pkgs.org / index.html Все прошло гладко, но в конце концов я хочу добавить код rcpp в свой пакет, и вот где ястолкнуться с проблемами. Предполагается, что функция use_rcpp в пакете devtools устанавливает ваш пакет всем необходимым для начала добавления файлов c ++. Однако, как только команда будет выполнена, она скажет вам скопировать и вставить комментарии в файл, который не существует. В учебнике, которому я следую, сказано то же самое: https://r -pkgs.org / src.html # cpp , но просто сказано добавить теги roxygen в ваш пакет. Это не указывает, где мне нужно добавить их.

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

Вывод, который дает функция:

✔ Установка активного проекта в 'R / packages / rcppTester'

✔ Создание 'src /'

✔ Добавление ' .o', ' .so',' * .dll 'в' src / .gitignore '

● Скопируйте и вставьте следующие строки в' R / packages / rcppTester / R / rcppTester-package.R ':

## использовать это пространство имен: начало

# '@useDynLib rcppTester, .registration = TRUE

## использовать это пространство имен: конец

NULL

[Скопировано вбуфер обмена]

✔ Добавление 'Rcpp' к полю LinkingTo в ОПИСАНИИ

✔ Добавление 'Rcpp' к полю импорта в ОПИСАНИЕ *

● Скопируйте и вставьте следующие строки в 'R/packages/rcppTester/R/rcppTester-package.R':

## использовать это пространство имен: start

# '@importFrom Rcpp sourceCpp

## usethis namespace: end

NULL

[Скопировано в буфер обмена]

Снова у меня нет файла с именем "rcppTester-package.R", и мой пакет выдает ошибки, когдаЯ пытаюсь использовать файлы cpp. Любой совет будет принята с благодарностью.

1 Ответ

1 голос
/ 10 октября 2019

Вам не нужно использовать devtools или usethis, если они вас смущают - они действительно добавляют слой запутывания, который иногда затрудняет происходящее.

Сам Rcpp имеет функцию Rcpp.package.skeleton(), а в среде IDE RStudio есть что-то связанное (но независимое) в «Файл -> Новый проект -> Пакет с Rcpp». Я использую оба. Вы можете начать с любого и получить пакет, который компилирует . Оба сделают это.

Возьмите это как снимок, а затем добавьте документацию roxygen2. Если вы делаете это вручную, вам нужно запустить compileAttributes(), чтобы получить разметку roxygen из файла C ++ в файл R, где roxygenize() ее увидит. RStudio выполняет обе функции автоматически.

Итак, подведем итоги: попробуйте разделить «пакет с Rcpp» и «пакет с использованием roxygen», если совместный «пакет с использованием Rcpp и roxygen» вызывает у вас проблемы.

...