首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏优雅R

    「R」从 R 到 Rcpp

    参考图书:《Rcpp:R 与 C++ 的无缝整合》 Rcpp 的主要目的在于使得开发 R 语言的 C++ 相关拓展变得更加容易、更少出错。 我们首先从斐波那契数列问题开始探索 Rcpp。 int x = Rcpp::as<int>(xs); int fib = fibonacci(x); return (Rcpp:wrap(fib)); } as 和 wrap 是 Rcpp 很重要的两个转换函数 ", includes = cxxcode, body = " int x = Rcpp::as<int>(xs); return Rcpp::wrap(fibonacci(x) 在 fibonacci.cpp 中写入如下内容: #include <Rcpp.h> using namespace Rcpp; // [[Rcpp::export]] int fibonacci(const 当然,强大的 Rcpp 不仅仅如此,它还提供了诸多的与 R 交互的数据类型,后续再学习分享。

    1.4K10编辑于 2022-01-21
  • 来自专栏R语言交流中心

    Rcpp在R语言中实现C++与R的交互

    在这里需要用到的包是Rcpp。 在构建好C++文件后,我们可以通过Rcpp自带的sourceCpp将C++文件引入R语言之后其函数就可以像R中的函数一样直接被调用。 ? 首先,我们需要在Rstudio中构建包含Rcpp 的R包的框架,具体,可以自己操作下,都是可视化的点呀点。构建好后,如下的文件结构: ? 另外需要运行Rcpp.package.skeleton()为DESCRIPTION文件添加Rcpp导入或者自己收到添加。 ? 在NAMESPACE中需要添加importFrom(Rcpp,evalCpp)引入Rcpp环境。 至此,基础的Rcpp调用前期准备工作就完成了,接下来就是如何在R中进行调用。

    3.8K20发布于 2021-03-11
  • 来自专栏拓端tecdat

    R语言中使用RCPP并行计算指数加权波动率

    因此,我想分享Rcpp和RcppParallel如何帮助我们减少计算时间。 我将使用汇率的历史数据集 作为测试数据。 函数计算指数加权波动率 load.packages('Rcpp') sourceCpp(code=' #include <Rcpp.h> using namespace Rcpp; using namespace std; // [[Rcpp::plugins(cpp11)]] //ema[1] = 0 //ema[t] = (1-a)*r[t-1] + (1-a)*a*ema[t-1] // [[Rcpp break; res[t] = NA_REAL; } int start_t = t; -a) * a^i * (r[t-1-i] - rhat[t])^2, i=0 ... inf // [[Rcpp # 建立 RCPP 并行函数计算指数加权波动率 load.packages('RcppParallel') sourceCpp(code=' using namespace Rcpp; using

    1.2K21发布于 2020-11-19
  • 来自专栏优雅R

    「R」从斐波那契数列生成来看算法和 Rcpp 的效率

    ❝学习材料:《Rcpp:R与C++的无缝整合》❞ 斐波那契数列指的是每一项都等于前两项之和的数列,定义为 F[1]=1 F[2]=1 F[n]=F[n-1]+F[n-2](n>=3) 本文主要使用它作为示例来对比算法和实现方式 (R与Rcpp)对计算效率的影响,以及在 R 中如何简单使用 C++。 运行: system.time(fibR(35)) #> user system elapsed #> 12.459 0.062 12.620 C++ 版本: library(Rcpp > using namespace Rcpp; // 通过 3 部分定义 C++ 类 Fib: // 1. ) cppFunction( "#include <Rcpp.h> using namespace Rcpp; // [[Rcpp::export]] int fibonacci3(int n)

    86020编辑于 2022-01-21
  • 来自专栏R语言交流中心

    R语言调用C++程序

    今天我们介绍R语言和高效语言结合的一种方法: 安装R包:Rcpp。当然,我们这次环境是Linux下的。如果你还不知道Linux下面如何安装R语言,那么参照我们前面的安装过程。 创建C++的代码文件,vim R_C.cpp,然后将我们已经写好的计算均值的代码复制到里面 注意每一个函数之前,都有加一个//[[Rcpp::export]] ? 保存文件,接下来打开R语言,导入R包Rcpp: 载入已经写好的C++程序。 代码: Library(Rcpp) Rcpp::sourceCpp('/var/www/html/open_c/R_C.cpp') a=sample(20) average(a,20)# 调用C++函数 > #include<vector> using namespace Rcpp; using namespace std; // [[Rcpp::export]] double average (vector

    4K30发布于 2019-07-31
  • 来自专栏拓端tecdat

    Mac系统R语言升级后无法加载包报错 package or namespace load failed in dyn.load

    具体来说,我需要加载的库是stochvol  ,Rcpp和 caret。我尝试重新安装 R, 但仍然无法正常工作。 .): unable to load shared object '/Library/Frameworks/R.framework/Versions/3.6/Resources/library/Rcpp /libs/Rcpp.so': dlopen(/Library/Frameworks/R.framework/Versions/3.6/Resources/library/Rcpp/libs/Rcpp.so ++abi.dylib in /Library/Frameworks/R.framework/Versions/3.6/Resources/lib/libc++.1.dylib 加载后报错:  使用Rcpp  成功安装软件包 后 install.packages("Rcpp") ,尝试时我仍然收到上面的消息 library(Rcpp)。

    4.2K00发布于 2020-10-24
  • 来自专栏拓端tecdat

    R语言用Rcpp加速Metropolis-Hastings抽样估计贝叶斯逻辑回归模型的参数

    这篇文章就此问题进行了研究,以展示Rcpp如何帮助克服这一瓶颈。 TLDR:只需用C ++编写log-posterior而不是矢量化R函数,我们就可以大大减少运行时间。 我模拟了模型的数据: ? 后者使用C ++(log\_post.cpp)中的log-posterior编码,并使用Rcpp编译成R函数。Armadillo库对C ++中的矩阵和向量类很有用。 那么Rcpp实现与R实现相比如何呢?Rcpp的运行时间明显较低。当log-posterior被编码为矢量化R函数时,采样器相对于Rcpp实现运行速度大约慢7倍(样本大小为100)。 for(i in 1:length(s){ benchmark(mh(X, Y, iter = iter) time\[i\] <- time/rcpp plot(ss, time) ?

    78220发布于 2021-07-16
  • 来自专栏小明的数据分析笔记本

    使用R语言的export包的时候遇到的报错和解决办法

    in PPTX_(file, bg, width, height, offx = offx, offy = offy, pointsize = pointsize, : function 'Rcpp_precious_remove ' not provided by package 'Rcpp' 查了一下 说直接更新 Rcpp 这个R包 参考链接是 https://github.com/matthiasgomolka/simfinapi /issues/26 更新R包直接把这个包重新安装一遍就可以 install.packages("Rcpp") 最终得到了结果

    1.9K30发布于 2021-07-30
  • 来自专栏数据驱动实践

    R语言:OCR图文识别,tesseract支持png、pdf转word

    # 如遇Rcpp报错,建议remove包后重新install # 特别情况下可直接至library安装路径下手动删除 # if(! require(Rcpp)) install.packages("Rcpp") # if(! require(tesseract)) install.packages("tesseract") rm(list = ls()) library(Rcpp) library(tesseract) #如果不报错

    4.5K20编辑于 2022-04-18
  • 来自专栏育种数据分析之放飞自我

    如何在R语言中安装plink2R用于读取plink二进制文件

    plink2R plink2R.R README.md 进入R3.6: install.packages('plink2R/',repos=NULL) ERROR: dependencies ‘Rcpp installation of package ‘plink2R/’ had non-zero exit status 报错,缺少两个R包,接着安装: install.packages(c("Rcpp record of temporary installation path * DONE (plink2R) > library(plink2R) Loading required package: Rcpp

    1.1K10编辑于 2024-06-21
  • 来自专栏CDA数据分析师

    提升R代码运算效率的11个实用方法

    本文将介绍几种适用于大数据领域的方法,包括简单的逻辑调整设计、并行处理和Rcpp的运用,利用这些方法你可以轻松地处理1亿行以上的数据集。 5.使用 which()语句 利用which()语句来筛选数据集,我们可以达到Rcpp三分之一的运算速率。 ? 8.利用Rcpp 截至目前,我们已经测试了好几种提升运算效率的方法,其中最佳的方法是利用ifelse()函数。如果我们将数据量增大十倍,运算效率将会变成啥样的呢? 接下来我们将利用Rcpp来实现该运算过程,并将其与ifelse()进行比较。 ? 下面是利用C++语言编写的函数代码,将其保存为“MyFunc.cpp”并利用sourceCpp进行调用。 ? 正则化为1) 向量化方法:738X, 631578行每秒 只考虑真值情况:1002X,857142.9行每秒 ifelse:1752X,1500000行每秒 which:8806X,7540364行每秒 Rcpp

    1.9K80发布于 2018-02-24
  • 来自专栏素质云笔记

    提升R代码运算效率的11个实用方法——并行、效率

    本文将介绍几种适用于大数据领域的方法,包括简单的逻辑调整设计、并行处理和Rcpp的运用,利用这些方法你可以轻松地处理1亿行以上的数据集。 5.使用 which()语句 利用which()语句来筛选数据集,我们可以达到Rcpp三分之一的运算速率。 ? 8.利用Rcpp 截至目前,我们已经测试了好几种提升运算效率的方法,其中最佳的方法是利用ifelse()函数。如果我们将数据量增大十倍,运算效率将会变成啥样的呢? 接下来我们将利用Rcpp来实现该运算过程,并将其与ifelse()进行比较。 ? 下面是利用C++语言编写的函数代码,将其保存为“MyFunc.cpp”并利用sourceCpp进行调用。 ? 向量化方法:738X, 631578行每秒 只考虑真值情况:1002X,857142.9行每秒 ifelse:1752X,1500000行每秒 which:8806X,7540364行每秒 Rcpp

    1.4K50发布于 2019-05-26
  • 来自专栏张高兴的博客

    社交网络分析的 R 基础:(三)向量、矩阵与列表

    这时使用 Rcpp 包调用 C++ 的代码,采用并行计算的方式加快计算速度。对于矩阵的计算操作,安装 Rcpp 包的同时还需要安装 RcppEigen 包。 // [[Rcpp::depends(RcppEigen)]] #include <RcppEigen.h> // [[Rcpp::export]] SEXP eigenValues(const Eigen ::Map<Eigen::MatrixXd> A){ Eigen::SelfAdjointEigenSolver<Eigen::MatrixXd> es(A); return Rcpp: :wrap(es.eigenvalues()); } // [[Rcpp::export]] SEXP eigenVectors(const Eigen::Map<Eigen::MatrixXd> A ; } 紧接着在工作区中引入 Rcpp 包与 matrix.cpp 文件,此时就可以调用特征值计算函数 eigenValues() 和特征向量计算函数 eigenVectors()。

    3.4K20编辑于 2022-05-09
  • 来自专栏科技记者

    《高效R语言编程》7--高效优化

    需要用到的包:microbenchmark, ggplot2movies, profvis, Rcpp 代码分析 首先是确定哪个是瓶颈,Rprof()是可以分析的一个内置工具,但是这个结果不确定,取决于外部环境 Rcpp C++是一个现代、快速并具有较强支持度的语言,包含各种库。Rcpp提供了一个友好的API,编写高性能代码,C++中瓶颈的典型是地址循环与递归函数。 add_r <- function(x, y) x * y # R语言版 # C++版 library(Rcpp) cppFunction( double add_cpp(double x, double

    1.7K40发布于 2021-07-27
  • 来自专栏大猫的R语言课堂

    For循环与向量化(Vectorization)

    R语言提供了一个很好的C++语言的接口,Rcpp包能够比较方便调用C++的语句进行操作。 (若有对Rcpp感兴趣的同学可以戳这里进行了解) library(microbenchmark) Rcpp::cppFunction('NumericVector growthRCL(NumericVector microbenchmark(growthRCL(1:10000), times = 1000) %>% as.data.table() time4[, median(time)/1e6] 0.029601 如上所示,使用Rcpp 通过运行结果可以发现,Rcpp调用的底层循环略优于data.table的向量化,运行时间在0.03s左右。

    2.2K30编辑于 2022-04-14
  • 来自专栏优雅R

    「R」Windows R 安装包显示无法锁定目录怎么搞?

    D:\Tool\R_Library’ for modifying Try removing ‘D:\Tool\R_Library/00LOCK’ 尝试下解决方案: install.packages("Rcpp ", dependencies = TRUE, INSTALL_opts = '--no-lock') 把 Rcpp 改成要装的包名。

    4.4K20发布于 2020-07-02
  • 来自专栏生信喵实验柴

    R语言环境搭建

    Development Files R-RInside-examples.x86_64 : RInside Examples R-RUnit.noarch : R Unit test framework R-Rcpp.x86 _64 : Seamless R and C++ Integration R-Rcpp-devel.x86_64 : Rcpp Development Files R-Rcpp-examples.x86 _64 : Rcpp Examples R-core.x86_64 : The minimal R components necessary for a functional runtime R-core-devel.x86

    1.6K10编辑于 2022-10-25
  • 来自专栏Chris生命科学小站五年归档

    【测评】提高R运行效率的若干方法

    具体方法是 先用C语言写好函数脚本,比如保存为myfunction.cpp,然后在R里面加载Rcpp包调用即可。 比如: library(Rcpp) sourceCpp(“myfunction.cpp”) system.time(output<- myFun(var) ) #具体见Rcpp帮助 虽然有很多同学不会C

    1.9K10编辑于 2023-02-28
  • 来自专栏生信菜鸟团

    ORA富集分析

    R的intersect()函数过于低效,所以这里我们使用顾叔提速富集分析的方法:https://mp.weixin.qq.com/s/G1gFGgu0jPzXWE97nxW4Qw library(Rcpp ) sourceCpp(code = ' // [[Rcpp::plugins(cpp11)]] #include <Rcpp.h> #include <unordered_set> using namespace Rcpp; // [[Rcpp::export]] List intersectToList(List lt, StringVector x) { int n = lt.size ) sourceCpp(code = ' // [[Rcpp::plugins(cpp11)]] #include <Rcpp.h> #include <unordered_set> using namespace Rcpp; // [[Rcpp::export]] List intersectToList(List lt, StringVector x) { int n = lt.size

    1.3K10编辑于 2024-01-04
  • 来自专栏大猫的R语言课堂

    R文本挖掘 | 如何在用户词库中添加搜狗词典?

    install.packages("devtools") 2> install.packages("stringi") 3> install.packages("pbapply") 4> install.packages("Rcpp 3> “pbapply”能够为*apply族函数增加进度条(progress bar) 4> “Rcpp”,“RcppProgress”能够让R直接调用外部的C++程序,大大增加运算速度(jieba本身就是一个 参数scel用来给出细胞词库的路径(记住要带上扩展名哦); output给出输出文件的路径,我们在这里把他放到了和原细胞词库同一个路径下面,并且将其扩展名改为.txt; cpp = TRUE表示采用Rcpp

    5.8K41发布于 2020-10-23
领券