2013-04-19 2 views
1

ОК, поэтому я создал пакет R foo с функцией Rcpp.package.skeleton. Кроме того, я составил файл Hello World C++ сКак запустить Rcpp Hello World?

R CMD SHLIB foo/src/rcpp_hello_world.cpp 

Однако, когда я называю rcpp_hello_world я получаю сообщение об ошибке:

> source("foo/R/rcpp_hello_world.R") 
> rcpp_hello_world() 
Error in .Call("rcpp_hello_world", PACKAGE = "foo") : 
    "rcpp_hello_world" not available for .Call() for package "foo" 

Любые улики?

+2

Вы читали и следовали инструкциям в виньетка [ "Запись пакета, использует Rcpp "] (http://dirk.eddelbuettel.com/code/rcpp/Rcpp-package.pdf)? Чтение того, что при просмотре источников Rcpp-зависимого пакета (рекомендуется RcppExamples рекомендуется), вы должны начать/все время там. –

+0

Josh O'Brien: Да, но я хотел бы иметь возможность вызывать функции и тестировать вещи во время разработки без установки пакета. Вы знаете, как я могу это сделать? –

ответ

5

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

После установлен вы можете нагрузки он, а затем вы можете фактически выполнить новую функцию.

В качестве альтернативы вы можете работать на лету через атрибуты Rcpp и/или встроенный пакет.

+0

Спасибо за ответ. Я начал использовать атрибуты Rcpp и функцию 'sourceCpp', но мой код на C++ состоит из более чем одного исходного файла, то, что я прочитал, не поддерживается sourceCpp. –

+0

Цикл загрузки пакета на самом деле не является обременительным, и, устанавливая параметры (см. 'R CMD INSTALL --help' и' R CMD build --help'), вы можете сделать это быстрее. И пакет, скорее всего, вы действительно хотите здесь. –

1

Чтобы запустить пример "привет мир", сделайте следующее:

  1. Start R и установить пакет Rcpp по:

    install.packages('Rcpp')

  2. Сформировать шаблон Rcpp в R:

    Rcpp.package.skeleton("mypackage")

  3. Для создания архива необходимо включить:

    R CMD build mypackage

  4. Выход R. Вы должны увидеть папку «mypackage». Введите следующую команду, чтобы проверить пакет:

    R CMD check mypackage

  5. Теперь вы увидите архив mypackage_1.0.tar.gz. Установите его:

    R CMD INSTALL mypackage_1.0.tar.gz

  6. Бежим пакет в R. Start R и выполните следующие действия:

    library('mypackage')

    rcpp_hello_world() # Try the C++ function generated in the template

    [[1]] [1] "foo" "bar"

    [[2]] [1] 0 1

+0

@baptiste Исправлено ... – SmallChess

+0

Ваше имя пользователя - настоящий дух статистики. Я совершенно не удивлен, когда вы находите, что вы отвечаете на вопросы R/на CV. –

+0

@ EddoHintoso CV ?? Приложил ли я свое резюме здесь? – SmallChess