Обратите внимание, что я только начинаю трогать Rcpp
чтобы ускорить какую-то функцию. В остальном я знаком с R
, но не столько с C++
или программирование (кроме R) в целом. Поэтому, пожалуйста, примите мои извинения за неразумные вопросы, которые обязательно придут …
Я ищу Rcpp
способ применить процедуру разделения-применения-объединения к некоторым данным. Думать о базе R
функция tapply
, Виньетка с сахаром RCPP только упоминает sugar
версии sapply
а также lapply
, Тем не менее, процедуры разделения-применения-объединения настолько распространены, что я подозреваю, что что-то есть (sugar
или нет), но я не нашел его. В конце концов, это можно сделать с помощью base (tapply, aggregate), plyr, dplyr, data.table
и, возможно, некоторые другие способы в R. Это заставляет меня думать, что должны быть некоторые удобные функции для Rcpp
но я по ним скучал. Буду признателен за любые указатели.
Предпосылки: Профилирование определенной (трудоемкой) процедуры начальной загрузки показывает, что повторное обращение к надежным стандартным ошибкам вычислительного кластера является узким местом. По этой причине я ищу способы ускорить эту функцию, и Rcpp
это то, что звучит многообещающе. Основная функция моей процедуры начальной загрузки основана на первая функция (clx
) определено здесь М. Араи, хотя с использованием data.table
вместо apply-tapply
-строительство и использование явного умножения матриц (то есть избегая использования sandwich
) уже значительно ускоряет эту функцию, но этого недостаточно. Поскольку мне нужно вызывать эту функцию несколько тысяч раз, меня интересует более эффективная реализация, и Rcpp
пришло в голову. Я не знаю, как сделать часть этой функции с помощью функции split-apply-Combine.
Задача ещё не решена.