С прошлой ночи я пробовал Rcpp
и inline
, и до сих пор я действительно наслаждаюсь этим.Но я новичок в C
в целом и пока могу заниматься только базовыми вещами, и мне трудно найти помощь в Интернете по таким вопросам, как функции.
Что-то, над чем я работал, было функцией, которая находитминимум вектора в глобальной среде.Я придумал:
library("inline")
library("Rcpp")
foo <- rnorm(100)
bar <- cxxfunction( signature(),
'
Environment e = Environment::global_env();
NumericVector foo = e["foo"];
int min;
for (int i = 0; i < foo.size(); i++)
{
if ( foo[i] < foo[min] ) min = i;
}
return wrap(min+1);
', plugin = "Rcpp")
bar()
Но похоже, что должен быть более простой способ сделать это, и он гораздо медленнее, чем which.max()
system.time(replicate(100000,bar()))
user system elapsed
0.27 0.00 0.26
system.time(replicate(100000,which.min(foo)))
user system elapsed
0.2 0.0 0.2
Я пропускаюосновная c++
или Rcpp
функция, которая делает это?И если да, то где я могу найти список таких функций?
Я думаю, этот вопрос связан с: Где я могу научиться писать код на C, чтобы ускорить медленные функции R?
, но отличается тем, что меня не интересует, как включить c++
в R
, а больше о том, как и где выучить базовый c++
код, который можно использовать в R
.