楼主: mamanana
5304 18

[学习分享] 我发现一个让R快几十倍的方法 [推广有奖]

  • 0关注
  • 2粉丝

高中生

37%

还不是VIP/贵宾

-

威望
0
论坛币
80 个
通用积分
0
学术水平
1 点
热心指数
1 点
信用等级
0 点
经验
144 点
帖子
45
精华
0
在线时间
3 小时
注册时间
2009-4-30
最后登录
2015-4-27

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
用rcpp或者rcpp armadillo来compile c++函数。这样写成的函数比R函数呼叫速度快出几倍乃至几千倍。有兴趣的可以研究一下
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:COMPILE Rcpp ARMA comp Mad

本帖被以下文库推荐

沙发
mamanana 发表于 2015-4-27 08:11:40 |只看作者 |坛友微信交流群
// [[Rcpp::depends(RcppArmadillo)]]
#include <RcppArmadillo.h>
using namespace Rcpp;
using namespace arma;
// [[Rcpp::export]]
vec samplex(){
  vec x(100000);
  for(int i = 0; i<100000; ++i){
  double u1=R::runif(0,1);
  double a=1,b=1.7,mid=0;
  double temp=0;
  double m=exp(1.7*log(1.7))-1;
  for (int l = 0;  l<50; ++l){
  mid=(a+b)/2;
  temp=(exp(mid*log(mid))-1)/m-u1;
  if(temp<0){
  a=mid;
  }
  if(temp>0){
  b=mid;
  }
  }
  x[i]=mid;
  }
  return x;
}
已有 2 人评分论坛币 学术水平 热心指数 收起 理由
李会超 + 80 精彩帖子
ryoeng + 1 + 1 通过Rcpp处理确实会很有效率,希望楼主多多.

总评分: 论坛币 + 80  学术水平 + 1  热心指数 + 1   查看全部评分

使用道具

藤椅
mamanana 发表于 2015-4-27 08:13:09 |只看作者 |坛友微信交流群
这是用rcpp写的c++函数,关于从一个分布sample的。用i7处理器sample10万次只要0.61秒。用R实现这个不花个1分钟是不太可能的

使用道具

板凳
mamanana 发表于 2015-4-27 08:14:37 |只看作者 |坛友微信交流群
而且这个方法上手极其简单。你只要装:rstudio,r和rtool即可。package只要rcpp和rcpparmadillo

使用道具

报纸
mamanana 发表于 2015-4-27 08:15:47 |只看作者 |坛友微信交流群
哎。为了下一个pdf只好不停地来发帖了。估计我说的这些东西很多人都会。。。。

使用道具

地板
lonestone 在职认证  发表于 2015-4-27 08:18:00 |只看作者 |坛友微信交流群
鼓励楼主的创新,

使用道具

7
soccy 发表于 2015-4-27 08:49:07 |只看作者 |坛友微信交流群
应该鼓励

使用道具

8
dayeyad 发表于 2015-4-27 10:02:07 |只看作者 |坛友微信交流群
学习一下

使用道具

9
512002855 发表于 2015-4-27 10:09:27 |只看作者 |坛友微信交流群
虽然这个结果很早就有了,但还是鼓励楼主继续探索,后续再介绍一些在R中用C的方法

使用道具

10
a443115637 发表于 2015-4-27 15:26:04 |只看作者 |坛友微信交流群
顶一下

使用道具

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-4-26 01:39