Где хороший учебник по созданию R-пакета с исходным кодом на С++? - программирование
Подтвердить что ты не робот

Где хороший учебник по созданию R-пакета с исходным кодом на С++?

Я не понимаю, когда начинаю смотреть скрипты configure. Я не уверен, как сделать создание R-пакета, который имеет несколько функций, построенных на C/С++, таким образом, что он переносится между Windows и Linux. Мои попытки изменить мужество существующих пакетов были бесплодными.

Приветствуется любая помощь или ссылки.

Обновление: Если возможно, я хотел бы указать ссылку: Boost, CUDA, & hwloc

Однако я понимаю, что Boost будет кошмаром, и hwloc не будет намного лучше. Поэтому я бы согласился только на CUDA. Вот почему я сидел в глубине и пытался модифицировать некоторые существующие пакеты в соответствии с моими потребностями (rgl и rglpk). Но я готов начинать без зависимостей и строить с нуля. Спасибо всем за ваши предложения!

4b9b3361

Ответ 1

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

Основная часть написания R-пакетов - "Написание R-расширений". Это очень полное руководство, но это также затрудняет чтение: http://cran.r-project.org/doc/manuals/R-exts.pdf

Вот небольшой учебник, который я нашел в google, который я использовал вначале, и содержащий как использовать код C: http://www.stat.columbia.edu/~gelman/stuff_for_blog/AlanRPackageTutorial.pdf

Другое руководство по пакетам R в целом, но не с кодом C: http://cran.r-project.org/doc/contrib/Leisch-CreatingPackages.pdf

Rcpp - очень полезный пакет для кода на С++, но я еще не использовал его еще (на самом деле 3 дня). Он имеет большую документацию в самом пакете.

Ответ 2

Мой подход по умолчанию заключается в том, чтобы узнать, как другие решили проблему. Есть 2800+ CRAN-пакетов, и многие из них существуют уже более десяти лет. Проблема разрешима и решена.

Теперь также верно, что документация есть, но, возможно, слишком много разбросана. Более того, мишени перемещаются. Например, много лет назад мы все еще использовали src/Makefile, в наши дни это очень рекомендуется, потому что нужно многоархивные сборки (в OS X, Windows и один день также в Linux).

Таким образом, попытка сохранить это просто помогает. На самом деле вы можете иметь действительный проект С++... без каких-либо изменений. Просто отбросьте файлы источников в src/ вашего пакета foo, и R будет знать, как построить libfoo.so или libfoo.dylib или..., в зависимости от платформы. И если вам нужны другие файлы заголовков, попробуйте использовать src/Makevars. Для внешних зависимостей он становится более сложным, и один из них должен учиться autoconf et al, но многие пакеты катаются с чем-то простым.

Поэтому, пожалуйста, разверните свой вопрос, покажите, что происходит, и документируйте, что вы пробовали. Я уверен, мы сможем вам помочь.

Изменить: И если вы захотите этого с пакетом Rcpp (который поможет с интеграцией R и С++), тогда существует вся виньетка, чтобы сделать это в своем собственном пакете.

Изменить 2: теперь, когда вы расширили свой вопрос, CUDA - совершенно другой зверь. Это сложнее, поскольку вы смешиваете разные компиляторы и т.д. Есть два примера пакетов на CRAN, изучите их.