Подтвердить что ты не робот

Основная документация для Rcpp

Я хочу посмотреть в rcpp, чтобы улучшить скорость моего кода R, не прибегая к беспорядочному С++-коду (у меня был некоторый успех с этим, но он выглядит как код из ада).

Итак, я проверил документацию, предоставленную Rcpp, а также пакет документов, предоставленных на сайте Dirk Eddelbuettel. Я установил и посмотрел на RcppExamples, но (по крайней мере, из его документации) большинство из них относятся к RcppClassic?. Кроме того, я сделал несколько поисковых запросов, но это не приводило к ответам на то, что было похоже на основные вопросы.

  • Индексы в Rcpp работают на основе нуля или на основе одного
  • Список содержит как operator(), так и operator[], но, по-видимому, не operator[[]]. Неясно, какой аналогичны [] и [[]] в R.
  • Есть ли какая-либо поддержка факторов в Rcpp (там, кажется, не существует)?

Примечание: на самом деле я нашел некоторые ответы из первого примера в Rcpp-introduction.pdf, но это просто чувствовала себя удачей.

Кроме того, мой stl очень ржавый, поэтому, если кто-нибудь может предоставить мне простой пример, где каждый элемент списка (например) print -ed с циклом stl-стиля, это было бы аккуратно.

Если кто-то хочет назвать меня идиотом, чтобы не найти эту информацию: идите и сделайте свой день. Затем сделайте мой и укажите мне на документы, которые мне нужны: -)

В качестве предложений к г-ну Эддельбуэттелю и другим авторам Rcpp (я ожидаю, что некоторые из них прочтут это): иерархии классов и т.д., предоставляемые doxygen, действительно опрятные, когда вы уже загружаетесь в Rcpp, но для beginner (в Rcpp), меня больше интересует список "этот метод в этом классе делает это как эта функция в R", а не "вы можете найти объявление этого оператора в этом заголовочном файле". В конце концов, я понимаю, что одной из целей Rcpp является снижение порога использования С++ в R? Обратите внимание: из того, что я видел и понял, я высоко ценю фактический код Rcpp и уважаю его создателей. Если отсутствие базовой документации является просто результатом "нехватки ресурсов", я бы хотел стать ресурсом (например: работать над "базовой" документацией, как только я сам ее пройду).

4b9b3361

Ответ 1

Я не совсем знаю, с чего начать отвечать, но вот быстрая попытка:

  • В пакете есть веб-сайт. На веб-сайте приведена документация.

  • В пакете есть восемь (8) виньет. Они четко перечислены. Они в основном предназначены для чтения как документация, некоторые более вводные и некоторые более продвинутые. Некоторые (например, выходные данные модульного тестирования) являются более интуитивно понятными.

  • Существует виньетка под названием Rcpp-introduction. Мы обращаемся к нему неоднократно. Мы предлагаем вам прочитать его. Это теперь также рецензируемая и опубликованная статья, которая может придать ей еще больший авторитет.

  • Существует виньетка Rcpp-FAQ. Первый вопрос: "Как мне начать?" что указывает на вышеупомянутое введение Rcpp.

  • Существует список рассылки, посвященный проекту, вы действительно можете прочитать архив.

  • Мы дали многочисленные беседы, доступны слайды, а также 90-минутная запись Google Tech Talk.

  • Даже StackOverflow имеет для него тег: [rcpp]. Вы можете прочитать более ранние сообщения.

  • В нем используется более двух десятков пакетов, явно указанных на странице CRAN для Rcpp. Вы можете прочитать их исходный код.

Все, что сказал, Rcpp нельзя использовать вместо С++, поэтому, если вы не знаете или не понимаете, что operator[[]] не может существовать на С++, мы тоже не можем вам помочь. Это не волшебная фея, а компилятор кода R-to-С++. Скорее, его внимание заключается в том, чтобы сделать намного проще получить код С++ из R, а в некоторых случаях даже удается улучшить практику С++. По сути, он пытается быть "супер-аддитивным": комбинация R и С++ должна быть более чем изолированной.

Наконец, я предоставляю вам, что пакеты RcppExamples, которые, кстати, покрывают старый и новый API, могут использовать больше примеров. Тем не менее, его sourecs дают хорошие рекомендации по переносу от старого ( "классического" ) к новому и существующему API.

Но есть только так много документации, которую мы можем написать. Я сам нахожу указанные выше пункты пули достаточно исчерпывающими. Однако вы можете отточить слабую часть элемента цепи. Это невезение. Пожалуйста, попробуйте другие указатели, перечисленные здесь.