Использование гео внутри функции Rcpp

У кого-нибудь есть подсказка, как использовать гео в функциях Rcpp (я создаю пакет R)? На самом деле, я ищу лучший подход, чем этот:

Rcpp::Environment rgeos_env = Environment::namespace_env("rgeos");
Rcpp::Function Dist = rgeos_env["gDistance"];

Контекстуализируя, я хочу вычислить расстояния между пространственными полигонами, но я делаю это много раз (Тесты Монте-Карло) и хочу повысить скорость своего кода.


person lcgodoy    schedule 08.04.2018    source источник
comment
Вы не улучшите скорость вызова функции R из Rcpp. Это связано с тем, что вам нужно остановить выполнение C++, передать объекты обратно в R, запустить функцию R, экспортируйте результаты обратно в C++, а затем завершите вычисление. В целом, есть намного больше накладных расходов для небольшого выигрыша.   -  person coatless    schedule 09.04.2018
comment
Пробовали ли вы использовать пакет sf, который использует geos для выполнения пространственных вычислений?   -  person SymbolixAU    schedule 09.04.2018
comment
@SymbolixAU, я пытался в прошлом году, но это было медленнее, чем у меня было. Спасибо за предложение.   -  person lcgodoy    schedule 09.04.2018
comment
Это качественный дубликат в том смысле, что вы не можете представить репликации Монте-Карло вокруг вызова функции R из C++ и каким-то образом сделать ставку на волшебную пони, чтобы сделать ее быстрее, чем R .   -  person Dirk Eddelbuettel    schedule 09.04.2018


Ответы (1)


Я вижу два возможных подхода к использованию гео без возврата к R из C++:

person Ralf Stubner    schedule 09.04.2018
comment
Спасибо за предложения, это было очень полезно. - person lcgodoy; 09.04.2018