从昨晚开始,我一直在尝试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
。