Разделить-применить-объединить в Rcpp, или у Tapply есть сахар-эквивалент Rcpp?

Обратите внимание, что я только начинаю трогать 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.

1

Решение

Задача ещё не решена.

Другие решения


По вопросам рекламы [email protected]