Questions tagged «rcpp»

9
加快R中的循环操作
我在R中遇到很大的性能问题。我编写了一个遍历data.frame对象的函数。它只是向中添加了一个新列data.frame并累积了一些内容。(简单的操作)。将data.frame有大约850K行。我的电脑仍在工作(现在大约10小时),我对运行时间一无所知。 dayloop2 <- function(temp){ for (i in 1:nrow(temp)){ temp[i,10] <- i if (i > 1) { if ((temp[i,6] == temp[i-1,6]) & (temp[i,3] == temp[i-1,3])) { temp[i,10] <- temp[i,9] + temp[i-1,10] } else { temp[i,10] <- temp[i,9] } } else { temp[i,10] <- temp[i,9] } } names(temp)[names(temp) == "V10"] <- "Kumm." …
193 performance  r  loops  rcpp  r-faq 

4
在哪里可以学习如何编写C代码来加快慢速的R函数?[关闭]
关闭。此问题不符合堆栈溢出准则。它当前不接受答案。 想改善这个问题吗?更新问题,使它成为Stack Overflow 的主题。 3年前关闭。 改善这个问题 学习如何编写用于R的C代码的最佳资源是什么?我了解系统和外语界面 R扩展部分,但是我发现很难。有什么好的资源(在线和离线)用于编写与R一起使用的C代码? 澄清一下,我不想学习如何编写C代码,而是想学习如何更好地集成R和C。例如,如何将C整数向量转换为R整数向量(反之亦然)还是从C标量到R向量?
115 r  rcpp 

4
R install.packages返回“无法创建锁定目录”
下载Rcpp软件包时出现此错误: > install.packages("Rcpp", dependencies=TRUE) Installing package(s) into ‘/home/me/src/Rlibs’ (as ‘lib’ is unspecified) trying URL 'http://cran.us.r-project.org/src/contrib/Rcpp_0.10.2.tar.gz' Content type 'application/x-gzip' length 2380089 bytes (2.3 Mb) ... Warning in dir.create(lockdir, recursive = TRUE) : cannot create dir '/home', reason 'Permission denied' ERROR: failed to create lock directory ‘/home/me/src/Rlibs/00LOCK-Rcpp’ ... 由于我的计算机位于计算机群集上,因此我已经在不同的节点上进行了尝试,并且小心删除了在/ tmp中下载的临时文件。奇怪的是我有权在/ home / …
73 r  package  rcpp 

3
为什么用Rcpp较慢地优化R目标函数,为什么呢?
我目前正在研究一种贝叶斯方法,该方法每次迭代都需要多项步骤来优化多项式logit模型。我正在使用optim()进行这些优化,并用R语言编写了一个目标函数。分析显示optim()是主要瓶颈。 深入研究后,我发现了这个问题,他们建议重新编码目标函数Rcpp可以加快处理过程。我遵循了该建议,并使用编码了我的目标函数Rcpp,但结果变慢了(大约慢了两倍!)。 这是我的第一次Rcpp(或与C ++有关的任何事情),但是我找不到找到矢量化代码的方法。任何想法如何使其更快? Tl; dr:Rcpp中函数的当前实现不如矢量化R快;如何使其更快? 一个可重现的示例: 1)在R和中定义目标函数Rcpp:仅截取多项式模型的对数似然 library(Rcpp) library(microbenchmark) llmnl_int <- function(beta, Obs, n_cat) { n_Obs <- length(Obs) Xint <- matrix(c(0, beta), byrow = T, ncol = n_cat, nrow = n_Obs) ind <- cbind(c(1:n_Obs), Obs) Xby <- Xint[ind] Xint <- exp(Xint) iota <- c(rep(1, (n_cat))) denom <- log(Xint %*% …
16 c++  r  optimization  rcpp 

1
从Rcpp函数返回指向`new`对象的指针的正确方法
考虑1)具有潜在的大内存打印的自定义类,以及2)执行一些预处理,然后创建并返回我们的自定义类的新对象的顶级函数。为避免不必要的值复制,该函数分配对象并返回指向它的指针。 根据前面的讨论,似乎将指针返回到新创建的对象的正确方法是将其包装为Rcpp::XPtr<>。然而,R则认为它有效的externalptr,而我在努力寻找与现代投它的正确方法RCPP_EXPOSED_CLASS和RCPP_MODULE做事的方式。 另一种方法是返回原始指针。但是,我不能100%地确定对象内存是否已正确清理。我跑去valgrind测试内存泄漏,但没有发现任何泄漏。但是,谁清理呢?R? 测试文件 #include <Rcpp.h> // Custom class class Double { public: Double( double v ) : value(v) {} double square() {return value*value;} private: double value; }; // Make the class visible RCPP_EXPOSED_CLASS(Double) // Option 1: returning raw pointer Double* makeDouble( double x ) { Double* pd = new …
9 c++  r  rcpp 

1
更新R后,RcppArmadillo的sample()不明确
我通常使用一个简短的Rcpp函数作为输入矩阵,其中每行包含K个合计为1的概率。然后,该函数为每行随机采样1到K之间与提供的概率相对应的整数。这是功能: // [[Rcpp::depends(RcppArmadillo)]] #include <RcppArmadilloExtensions/sample.h> using namespace Rcpp; // [[Rcpp::export]] IntegerVector sample_matrix(NumericMatrix x, IntegerVector choice_set) { int n = x.nrow(); IntegerVector result(n); for ( int i = 0; i < n; ++i ) { result[i] = RcppArmadillo::sample(choice_set, 1, false, x(i, _))[0]; } return result; } 我最近更新了R和所有软件包。现在,我无法再编译此函数。我不清楚原因。跑步 library(Rcpp) library(RcppArmadillo) Rcpp::sourceCpp("sample_matrix.cpp") 引发以下错误: …
9 r  rcpp  rcpparmadillo 
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.