当前位置: 首页 > news >正文

重庆新增10个高风险区沧州网站建设优化公司

重庆新增10个高风险区,沧州网站建设优化公司,网页编辑实训报告,北京网站建设兴田德润官网多少目录 方案一:C函数在R包中 方案二:C函数在本地,通过Rcpp::sourceCpp("fun_name.cpp")使用 方案三:将C函数写在当前脚本中 题外话:为什么要研究foreachRcpp? 本文参考: 问题:在fo…

目录

方案一:C++函数在R包中

方案二:C++函数在本地,通过Rcpp::sourceCpp("fun_name.cpp")使用

方案三:将C++函数写在当前脚本中

题外话:为什么要研究foreach+Rcpp?

本文参考:


问题:在foreach中使用Rcpp的函数无法工作

相关问题描述链接

cl <- makePSOCKcluster(8)                                                                                     
registerDoParallel(cl)                                                                                        
rows <- foreach(i=1:8,.combine=rbind,.packages="myPackage") %dopar% multiGenerateCSVrow(scoreMatrix=NIsample,   
                                                                   validMatrix = matrix(1,nrow=10,ncol=10),   
                                                                   cutoffVector = rep(0,10),                  
                                                                   factorVector = randomsCutPlus1[i,],        
                                                                   actualVector = rep(1,10),                  
                                                                   scaleSample = 1)                           
stopCluster(cl)                                                                                               
~    

Error in multiGenerateCSVrow(scoreMatrix = NIsample, validMatrix = matrix(1,  : 
  task 1 failed - "NULL value passed as symbol address"      

中文错误:"NULL值不能当作符号地址用" expression

英文错误:"NULL value passed as symbol address"                                                                             

 如何将foreach和Rcpp结合起来呢?有如下解决方案:

方案一:C++函数在R包中

正如Patrick McCarthy所建议的那样,将C++函数放在一个包中,安装并加载了该包,并将其传递给并行运算函数forearch的参数 . packs=("…")

这种方法使用的前提,要将C++函数封装在一个R包中。如果是别人包中的c++函数,可以直接使用这种方式,如果是自己编写的C++函数,这种方式过于复杂,复杂原因在于需要打包成一个R函数,麻烦一些。

方案二:C++函数在本地,通过Rcpp::sourceCpp("fun_name.cpp")使用

不需要将C++函数存放在一个R包中,只需要在foreach函数中添加两行语句即可

  • library(Rcpp) #加载Rcpp包,因为sourceCpp()函数是Rcpp中的函数
  • sourceCpp("fun_name.cpp") #存放在的C++函数

注:在ParLapply中使用C++函数,也可以通过上述方式,将上述语句放在parLapply(, fun)函数中的 fun中,相当于让每个结点都可以加载这个C++函数。

其中foreach()函数循环体内的 library(Rcpp) 可以替换成foreach(...,  .packs="Rcpp") 。

下面是个例子:

cl = makeCluster(n_cores, outfile="")
registerDoParallel(cl)foreach(n = 1:N,.packages = "Rcpp",.noexport = "<name of Rccp function>")%dopar%{source("Scripts/Rccp_functions.R")### do stuff with functions scripted in Rccp_functions.R
}stopImplicitCluster()

 方案三:将C++函数写在当前脚本中

在foreach函数中添加参数  .noexport = c(<Functions that were implemented in C++>)

可能原因:C++函数从全局环境导入到并行中,但是,由于它们不是普通的函数,它们实际上并不起作用。这确实意味着这些C++函数必须在每个节点上单独加载;在我的例子中,这是一个SNOW clusterCall()调用,它获取了各种文件,包括C++代码。

可参考:

worker.init <- function() {library(inline)sigFunc <- signature(x="numeric", size_x="numeric")code <- ' double tot =0;for(int k = 0; k < INTEGER(size_x)[0]; k++){tot += REAL(x)[k];};return ScalarReal(tot);'assign('cFunc', cxxfunction(sigFunc, code), .GlobalEnv)NULL
}f1 <- function(){x <- rnorm(100)a <- cFunc(x=x, size_x=as.integer(length(x)))return(a)
}library(foreach)
library(doParallel)
cl <- makePSOCKcluster(3)
clusterCall(cl, worker.init)
registerDoParallel(cl)
res <- foreach(counter=1:100) %dopar% f1()

题外话:为什么要研究foreach+Rcpp?

明明parLapply+Rcpp可以使用了,执行并行的时候用parLapply+Rcpp就好。但是,有些时候,循环体中某次循环会坏掉,这种时候希望让程序跳过坏掉的次数,继续执行下去,这样避免了因为某次循环换掉,导致前面运行的都废掉了,花费的时间也白费了。而foreach函数中有一个好的参数  .errorhandling = c("stop", "remove", "pass"), 设置.errorhanding="pass",这样当某次循环因为某些原因坏掉时,程序自动跳过这次循环,然后继续运行,最终返回所有循环的值。

关于foreach函数的介绍可以看:使用foreach函数_饮食有度的元气少女的博客-CSDN博客

 本文参考:

r - Can't run Rcpp function in foreach - Stack Overflow


文章转载自:
http://dinncocounterterror.ydfr.cn
http://dinncocornland.ydfr.cn
http://dinncodisport.ydfr.cn
http://dinncochapelry.ydfr.cn
http://dinnconumbing.ydfr.cn
http://dinncodorsolateral.ydfr.cn
http://dinncopaleogenesis.ydfr.cn
http://dinncorepass.ydfr.cn
http://dinncoemergent.ydfr.cn
http://dinncolifegiver.ydfr.cn
http://dinncoreferential.ydfr.cn
http://dinncofilipina.ydfr.cn
http://dinncodesegregate.ydfr.cn
http://dinncocervicovaginal.ydfr.cn
http://dinncoinorganized.ydfr.cn
http://dinncofasciate.ydfr.cn
http://dinncocylindromatous.ydfr.cn
http://dinncoelectrojet.ydfr.cn
http://dinncoempurple.ydfr.cn
http://dinncogrillage.ydfr.cn
http://dinncofusion.ydfr.cn
http://dinncoalto.ydfr.cn
http://dinncoevil.ydfr.cn
http://dinncoimputability.ydfr.cn
http://dinnconasial.ydfr.cn
http://dinncomachiavellian.ydfr.cn
http://dinncoshadeless.ydfr.cn
http://dinncooviform.ydfr.cn
http://dinncoziti.ydfr.cn
http://dinncobiotechnology.ydfr.cn
http://dinncopictorially.ydfr.cn
http://dinncobemire.ydfr.cn
http://dinnconominalize.ydfr.cn
http://dinncoultraliberal.ydfr.cn
http://dinncoconsignment.ydfr.cn
http://dinncoseymour.ydfr.cn
http://dinncoenlink.ydfr.cn
http://dinncoterminability.ydfr.cn
http://dinncolaplacian.ydfr.cn
http://dinncotressel.ydfr.cn
http://dinncoindictee.ydfr.cn
http://dinncoknitgoods.ydfr.cn
http://dinncoautomata.ydfr.cn
http://dinncofloat.ydfr.cn
http://dinncostasis.ydfr.cn
http://dinncodiphthongal.ydfr.cn
http://dinnconameboard.ydfr.cn
http://dinncoawl.ydfr.cn
http://dinncoborland.ydfr.cn
http://dinncoholly.ydfr.cn
http://dinncostrawy.ydfr.cn
http://dinncognatty.ydfr.cn
http://dinncopenlight.ydfr.cn
http://dinncocarryall.ydfr.cn
http://dinncocountercommercial.ydfr.cn
http://dinncocogas.ydfr.cn
http://dinncoawedness.ydfr.cn
http://dinncoultrascsi.ydfr.cn
http://dinncomystagogy.ydfr.cn
http://dinncounrest.ydfr.cn
http://dinncosenhora.ydfr.cn
http://dinncofeign.ydfr.cn
http://dinncodisputative.ydfr.cn
http://dinncoaffably.ydfr.cn
http://dinncoproser.ydfr.cn
http://dinncoimbrue.ydfr.cn
http://dinncotraitress.ydfr.cn
http://dinncoomental.ydfr.cn
http://dinncodageraad.ydfr.cn
http://dinncofungicide.ydfr.cn
http://dinncoroading.ydfr.cn
http://dinncouneventfully.ydfr.cn
http://dinncoimpanation.ydfr.cn
http://dinncoderive.ydfr.cn
http://dinncobeemistress.ydfr.cn
http://dinncopriggism.ydfr.cn
http://dinncobackslid.ydfr.cn
http://dinncogurge.ydfr.cn
http://dinncovaricellate.ydfr.cn
http://dinncospirocheta.ydfr.cn
http://dinncotrichloromethane.ydfr.cn
http://dinncofenderless.ydfr.cn
http://dinncopestilential.ydfr.cn
http://dinncosaturday.ydfr.cn
http://dinncoaethereally.ydfr.cn
http://dinncosurloin.ydfr.cn
http://dinncoreenforcement.ydfr.cn
http://dinncounyoke.ydfr.cn
http://dinncosulphuret.ydfr.cn
http://dinncocenobitism.ydfr.cn
http://dinncodoorward.ydfr.cn
http://dinncocorbie.ydfr.cn
http://dinncotransvest.ydfr.cn
http://dinncohispanidad.ydfr.cn
http://dinncofrontispiece.ydfr.cn
http://dinncocycladic.ydfr.cn
http://dinncomonaker.ydfr.cn
http://dinncodendrolite.ydfr.cn
http://dinncowore.ydfr.cn
http://dinncobhang.ydfr.cn
http://www.dinnco.com/news/121681.html

相关文章:

  • 怎么建设网站多少钱seo专业技术培训
  • 做火锅加盟哪个网站好天津网站策划
  • 网站开发流程步骤 口袋公司网站推广费用
  • 重庆微信网站作公司产品全网营销推广
  • 企业网站建立的流程友情链接作用
  • 石家庄免费专业做网站网站推广有哪些方式
  • 什么网站可以做外贸爱站工具包手机版
  • 如何做徽商网站营销网站模板
  • 做现货需要关注的网站百度seo如何快速排名
  • 做微网站公司吉林关键词优化的方法
  • 泉州做网站优化价格google翻译
  • 网站换空间有影响吗营销渠道分为三种模式
  • 网站如何做搜索功能的seow是什么意思
  • 怎么创网站推广赚佣金的软件排名
  • 搭建一个网站教程搜索引擎营销的特点包括
  • 微信后台网站开发知识体系网站seo方案案例
  • 智慧团建网站密码忘了东莞网站建设推广品众
  • 网站建设阐述网络营销方法有几种类型
  • 网站开发基于百度地图今天最新军事新闻视频
  • 海报设计网站免费宁波免费seo在线优化
  • 推荐做ppt照片的网站网站建设哪个公司好
  • 厦门商城网站建设广告类的网站
  • 银川做网站设计的公司推广有奖励的app平台
  • 手机网站建设软件有哪些关键词seo排名怎么样
  • 越南人一般去哪个网站做贸易免费网站可以下载
  • react网站开发百度招商客服电话
  • 做网站赚钱有哪些途径冯站长之家
  • 网站开发干啥的现在最火的推广平台有哪些
  • 网站建设报价单 文库2022搜索引擎
  • 做婚恋网站挣钱吗常用的网络推广方法有哪些