标签: rcpp

在包含R/Cpp代码的R包中使用roxygen2作为R函数

我有一个Cpp函数,使用Rcpp packgae在R函数内部调用.R函数接受inputDataFrame并使用Cpp函数(也接受DataFrame)来计算药物量(A1)作为时间的函数.然后R返回inputDataFrame计算量的添加列A1.

我想roxygen2在RStudio中使用包来对R函数(而不是Cpp函数)进行documnet.但是,当我使用roxygen2注释(如下所示)时,它没有按照您在构建模型时所期望的方式生成*.RD文件和帮助页面.请注意,当我的包只包含R函数时,我可以毫无困难地使用roxygen2.在后一种情况下,*.RD文件和帮助页面会按预期自动生成.

有关如何做到这一点的任何提示?

c++ r rcpp r-package

-1
推荐指数
1
解决办法
542
查看次数

将Rcpp Armadillo矩阵转换为double *

在RcppArmadillo中,我需要知道如何转换arma::mat为c样式的数组double *以用于其他功能。

当我运行以下功能时,计算机崩溃:

R部分:

      nn3 <- function(x){
         results=.Call("KNNCV", PACKAGE = "KODAMA", x)
         results
      }
Run Code Online (Sandbox Code Playgroud)

C ++部分:

     double  KNNCV(arma::mat x) {
        double *cvpred = x.memptr();
        return cvpred[1];
     }
Run Code Online (Sandbox Code Playgroud)

最后,我尝试:

     nn3(as.matrix(iris[,-5]))
Run Code Online (Sandbox Code Playgroud)

您能帮我发现错误吗?

armadillo rcpp

-1
推荐指数
1
解决办法
1050
查看次数

函数不适用于.Call使用Rcpp.package.skeleton()和compileAttributes

我试图密切关注Rcpp包文档中的指示,但我收到错误

Error in .Call("MicroCreditLRVBR_TestJacobian", PACKAGE = "MicroCreditLRVBR") : 
  "MicroCreditLRVBR_TestJacobian" not available for .Call() for package "MicroCreditLRVBR"
Run Code Online (Sandbox Code Playgroud)

包框架是用Rcpp.package.skeleton().我复制了我RC++代码,修改了Makevars指向包外的一些代码,更新了DESCRIPTION链接到RcppEigen,然后运行compileAttributes().然后我跑去R CMD build创建一个.gz文件并R CMD INSTALL安装它.它已成功构建和链接,但因上述错误而终止.

我可以看到函数MicroCreditLRVBR_TestJacobian确实在RcppExports.cpp和中定义RcppExports.R.我不知道为什么它不可用.Call.

请注意,NAMESPACE包括useDynLib(MicroCreditLRVBR)exportPattern("^[[:alpha:]]+").

当前状态下包的公共副本位于此github仓库中.任何帮助,将不胜感激.

c++ r rcpp

-1
推荐指数
1
解决办法
1459
查看次数

Rcpp继续为一项看似简单的任务而奔波

我整天都在考虑它,但仍然无法弄清楚为什么会这样.我的目标很简单:STEP1,生成函数S(h,p); 步骤2,通过梯形法则对S(h,p)进行数值积分,得到新函数SS(h).我编写了代码并通过sourceCpp来源它,它在R中成功生成了两个函数S(h,p)和SS(h).但是当我尝试通过计算SS(1)来测试它时,R只是保持运行而且从不给出了结果,这很奇怪,因为计算量并不大.知道为什么会这样吗?

我的代码在这里:

#include <Rcpp.h>
using namespace Rcpp;

//generate the first function that gives S(h,p)           
// [[Rcpp::export]]
double S(double h, double p){
  double out=2*(h+p+h*p);
  return out;
}
//generate the second function that gives the numerically integreation of S(h,p) w.r.t p
//[[Rcpp::export]]

double SS(double h){
  double out1=0;
  double sum=0;
  for (int i=0;i<1;i=i+0.01){
    sum=sum+S(h,i);
  }
  out1=0.01/2*(2*sum-S(h,0)-S(h,1));
  return out1;
}
Run Code Online (Sandbox Code Playgroud)

r rcpp

-1
推荐指数
1
解决办法
76
查看次数

R的预测

我正在尝试使用R进行预测,但每次下载预测包时,都会显示rcpp软件包未正确安装的错误.结果我无法运行预测.请问你能告诉我什么是错的或者我需要做什么.

r forecasting rcpp

-2
推荐指数
1
解决办法
810
查看次数

如何在C++中调用r函数rnorm

对不起,我是初学者,但我遇到了这个问题.我只是在寻找从C++中调用R中的rnorm函数的最简单方法.我已经查看了rcpp包,但即使在阅读完所有教程之后我仍然非常困惑.我很感激有人带我走过这些步骤,因为他们对编程有经验,但不是rcpp包.

c++ r rcpp

-2
推荐指数
1
解决办法
2085
查看次数

C++ R包错误:上传库

我将我的包提交到CRAN存储库.该包被接受没有错误,但在检查CRAN维护者的第二步报告了以下错误.

不幸的是,我不明白我是如何解决它的.

In file included from /Builds/CRAN-QA-Simon/packages/mavericks-x86_64/Rlib/3.3/RcppArmadillo/include/armadillo:23:

/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/fstream:864:20: error: 
no member named 'Rf_error' in 'std::__1::codecvt_base'; did you mean simply 'Rf_error'?
    if (__r == codecvt_base::error)
               ^~~~~~~~~~~~~~

/Library/Frameworks/R.framework/Resources/include/R_ext/Error.h:35:12: note:
'Rf_error' declared here
void NORET Rf_error(const char *, ...);
           ^
Run Code Online (Sandbox Code Playgroud)

在我的C++文件中,我写道:

#include <math.h>      
#include "ANN/ANN.h"     
#include "NN.h"  
#include <R.h>   
#include "RcppArmadillo.h" 

#include <map>
#include <vector>
#include <iostream>
Run Code Online (Sandbox Code Playgroud)

我该怎么纠正这个?是否包含Rpp.h?

r package armadillo rcpp

-2
推荐指数
1
解决办法
198
查看次数

如何使用Rcpp找到矩阵的两个特定列之间的最小值的索引?

我有一个 5x5 矩阵,想找到列“1”和“3”之间最小值的索引。在R我会这样做:

set.seed(1984)
m <- matrix(sample.int(25,25), 5)
min <- which(m[,c(1,3)] == min(m[,c(1,3)]), arr.ind = TRUE)
Run Code Online (Sandbox Code Playgroud)

使用 Rcpp 执行此操作的最有效方法是什么?

c++ r rcpp

-2
推荐指数
1
解决办法
501
查看次数

为什么Rcpp中的Portmanteau测试比R中的测试慢?

我需要对Portmanteau主要测试文章进行深入研究,为此,我必须在不同的场景,样本量和不同的ARMA模型(p,q)下评估它们,从而生成180个场景,这需要我花费6个小时。用R和Rcpp编程我的函数,但是我发现惊奇的是,在C ++中,它速度慢,我的问题是为什么?

在此处输入图片说明

我的R代码:

Portmanteau <- function(x,h=1,type = c("Box-Pierce","Ljun-Box","Monti"),fitdf = 0){
  Ti <- length(x)
  df <- h-fitdf
  ri <- acf(x, lag.max = h, plot = FALSE, na.action = na.pass)
  pi <- pacf(x, lag.max = h, plot = FALSE, na.action = na.pass)
  if(type == "Monti"){d<-0} else{d<-1}
  if(type == "Box-Pierce"){wi <- 1} else{wi <- (Ti+2)/seq(Ti-1,Ti-h)}
  Q <- Ti*(d*sum(wi*identity(ri$acf[-1]^2))+(1-d)*sum(wi*identity(pi$acf^2)))
  pv <- pchisq(Q,df,lower.tail = F)
  result <- cbind(Statistic = Q, df,p.value = pv)
  rownames(result) <- paste(type,"test")
  return(result)
  }
Run Code Online (Sandbox Code Playgroud)

我的Rcpp代码

#include <Rcpp.h>
using namespace …
Run Code Online (Sandbox Code Playgroud)

r rcpp rstudio

-2
推荐指数
1
解决办法
68
查看次数

an alternative to nested for loops in r OR possible Rcpp needed?

I have a nested loop as

X <- matrix(c(0.5,0,0,0.75), nrow = 2)
k = nrow(X)

ans1 <- 0
ans2 <- 0
for (aa in 1:k) {
  for (bb in 1:k) {
    for (cc in 1:k) {
      for (dd in 1:k) {
        ans1 = ans1 + (0.45 * X[aa,bb] * X[cc,dd])
        for (xx in 1:k) {
          for (yy in 1:k){ 
            ans2 = ans2 + (1.7*X[aa,bb]*X[xx,yy]*X[cc,dd] + 0.2*X[aa,xx]*X[bb,yy]*X[cc,dd])  
          }
        }
      }
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

But the matrix X which must be a …

loops for-loop r rcpp

-2
推荐指数
1
解决办法
60
查看次数

朱莉娅的速度优于R

我一直在使用R进行公司财务和资产定价方面的研究,并且由于我在数学和统计方面的背景,我非常喜欢它.到目前为止,我在R中遇到了两个主要的约束.第一个是处理大数据文件,但我有点通过将R与PostgreSQL和Spark结合起来避开它,我相信我可以从高性能计算机或AWS云获得更多内存在将来.第二个约束是执行速度(对于通过刻度安全报价数据处理滴答很重要),我被推荐Julia比R具有巨大的速度优势.我的问题是,由于Rcpp提供了非常快的执行速度,Julia的速度优势仍然存在保持?我在考虑是否应该学习朱莉娅.

此外,R提供了与WRDS,Quandl,TrueFX和TAQ的完美数据库连接,我真的习惯了Hadley Wickham风格的数据清理.作为一名学者,我有点像R得到了像Journal of Stat Software这样的同行评审期刊的支持.我会试试朱莉娅,看看它是如何运作的.感谢所有的答案和评论!

r rcpp julia

-3
推荐指数
1
解决办法
665
查看次数

Rcpp如何在Rcpp中生成随机多元法向量?

我想生成一些大的随机多变量(超过6维)正常样本.在R中,许多软件包可以做到这一点,例如rmnorm,rmvn ......但问题是速度!所以我试着通过Rcpp编写一些C代码.我在线浏览了一些教程,但似乎在多变量分布中没有"糖",在STL库中也没有.

任何帮助表示赞赏!

谢谢!

c r random-sample rcpp

-4
推荐指数
1
解决办法
2563
查看次数

-6
推荐指数
1
解决办法
174
查看次数

标签 统计

rcpp ×13

r ×12

c++ ×4

armadillo ×2

c ×1

for-loop ×1

forecasting ×1

julia ×1

loops ×1

package ×1

r-package ×1

random-sample ×1

rstudio ×1