使用数据,长下面这样:

方法:使用parallel包,并行向量化处理,进一步提升原先向量化处理速度。

  • 原始代码:
start <- Sys.time()
experiment_step1 <- apply(dtc_small_modify, 1, decompose)
end <- Sys.time()
print(end-start)

原始运行时间:3.083114 分

  • 使用parallel包后
library(parallel) #并行处理包
cl.cores <- detectCores(logical = F) #计算电脑核心数
cl <- makeCluster(cl.cores) # 初始化要使用的核心数
start <- Sys.time()
results <- parApply(cl=cl, dtc_small_modify, 1, decompose) # apply的并行版本
stopCluster(cl) # 关闭并行模式
end <- Sys.time()
print(end-start)

并行后,运行时间:55.5877 秒,相较原先,速度提升了将近四倍!


Tips:上述是对向量化(Vectorization)apply类的并行处理。对于apply的并行处理,必须使用par开头的对应apply.列表如下:

parLapply(cl = NULL, X, fun, …, chunk.size = NULL)
parSapply(cl = NULL, X, FUN, …, simplify = TRUE, USE.NAMES = TRUE, chunk.size = NULL)
parApply(cl = NULL, X, MARGIN, FUN, …, chunk.size = NULL)
parRapply(cl = NULL, x, FUN, …, chunk.size = NULL)
parCapply(cl = NULL, x, FUN, …, chunk.size = NULL)
parLapplyLB(cl = NULL, X, fun, …, chunk.size = NULL)
parSapplyLB(cl = NULL, X, FUN, …, simplify = TRUE, USE.NAMES = TRUE, chunk.size = NULL)

使用apply类向量化操作后,常常产生大规模列表,可能需要将列表转成一个完整的大数据框。

res.df <- do.call(rbind,results) # 按行整合结果
df <- as.data.frame(res.df) #转成数据框

Tips:上面的do.call函数简单说明

END


R语言如何并行处理[parallel package][向量化操作并行优化]相关推荐

  1. R语言实现并行计算[parallel,Rdsm]

    R语言实现并行计算[parallel,Rdsm] 最近在R中的学习并行计算 整个人被各种函数整的头都大了 所以准备专门写一条博文来总结 所谓R中的并行无非是 snow包multicore包和forea ...

  2. r语言 调用 c,R语言数据的输入和输出操作

    数据的载入 R本身已经提供了超过50个数据集,而在众多功能包中,默认的数据集被存放在datasets程序包中,通过函数data()k可以查看系统提供所有的数据包,同时可以通过函数library()加载 ...

  3. R语言空间数据处理(part1)--基础数据操作与处理

    学习笔记,仅供参考 学习书目:<R语言空间数据处理与分析实践教程>–卢宾宾; 基础数据操作与处理 设置工作路径,并导入包 workL = "F:/MyStudio/Rstudio ...

  4. R 语言怎么保存工作目录到当前路径_【R语言基础】01.R语言软件环境搭建及常用操作...

    一.R语言简介 R语言是专业的统计分析软件,来自著名数据科学网站(http://www.kdnuggets.com/)发起的一个2019年统计分析和数据挖掘软件使用情况的调查结果: 表明R语言是该领域 ...

  5. R语言︱基本函数、统计量、常用操作函数

    先言:R语言常用界面操作 帮助:help(nnet) = ?nnet =??nnet 清除命令框中所有显示内容:Ctrl+L 清除R空间中内存变量:rm(list=ls()).gc() 获取或者设置当 ...

  6. 【R语言】文件及路劲操作

    大家可能对使用dos或者shell创建文件及文件夹或者查看和修改其属性并不陌生,其实R语言的基础函数中也囊括了文件夹和文件的基本操作函数,由于使用R的过程中会常常需要与文件打交道,因此一些基本的文件操 ...

  7. 【R语言与数据分析实战】数据操作(一):基于向量的处理与外部数据处理

    目录 1.R中的常用数据集 2.读写CSV文件 (1) 读写CSV文件 (2) 读写对象文件 3.合并数据框的行与列 4.apply系数函数 (1) apply (2) lapply (3) sapp ...

  8. 云服务器上安装 R语言 以及 RStudio Server 详细图文操作(全)

    目录 前言 1. 更换镜像源 2. 安装R 2.1 R包版本(最新) 3. 安装RStudio Server 4. 后续细节 4.1 关闭防火墙 4.2 入口规则(端口) 4.3 增加用户 5. 验证 ...

  9. 【已解决】R语言添加行、列,转置操作

    严格来说,矩阵的长度和维度是固定的,因此不能增加或删除行或列.但是可以给矩阵重新赋值,这样可以得到和增加或删除一样的效果. 函数rbind()(代表row bind,按行组合)和函数cbind()(代 ...

最新文章

  1. HCNE题库附件、可下载
  2. 日报 18/06/04
  3. easyui---修改删除查询
  4. P2286 [HNOI2004]宠物收养场
  5. 如何将 kitten编程猫里的以分号分隔的长字符串转换成列表结构
  6. C++工作笔记-对继承的进一步认识
  7. php分页上一页下一页判断,一个分页函数:显示“上一页下一页”等
  8. windows域策略——配置组策略刷新间隔
  9. Mac系统升级node
  10. 走进Selenium新世界
  11. Yii框架官方指南系列42——专题:验证和授权(Authentication and Authori
  12. 个人记账软件测试初学者,好用的个人记账软件
  13. linux+路由器+刷机,某款小路由刷机方法介绍
  14. idea使用技巧总结,超实用(2年mac idea使用经验)
  15. java生成随机10位数字_用Java生成10个随机的四位数字
  16. 实习每日总结_20161212
  17. 电信计费综合管理系统
  18. 基于HSV颜色空间的辅助车牌定位
  19. win10系统桌面图标变为白色方框和去除桌面图标快捷方式小箭头的方法
  20. 如何通过python自动化薅短视频APP羊毛

热门文章

  1. 在dotnetnuke中去掉显示姓名中的空格
  2. flash as3笔记1
  3. 【技术博客】 利用Postman和Jmeter进行接口性能测试
  4. BugkuCTF web5
  5. 使用Android OpenGL ES 2.0绘图之三:绘制形状
  6. 一篇文章总结暴力破解方法大全
  7. 软件_git异常错误[博]
  8. 数据分析汇报用这个神器,让他们弃用了Excel和PPT
  9. flex里播放声音的方法
  10. tomcat 启动需要java环境吗?_三分钟教你Windows环境下,如何设置Tomcat随机自动启动?...