加速R运行的简易方法-数据结构和*pply簇

数据结构

之前刚开始用R时常使用data.frame来为主要的数据结构。因为以data.frame为对象比矩阵什么更加灵活,就像一个excel表一样。但是,在data.frame上用进行矩阵操作会比matrix要慢。所以尽可能的用matrix代替data.frame或者用vector存储再组合成data.frame。以一个简单的例子比较data.frame和matrix进行矩阵操作的速度差异。

dataMatrix <- matrix(rnorm(1E4*1000), nrow=1000) ##生成矩阵
dataFrame <- as.data.frame(dataMatrix) ##另存数据框格式
system.time(data_rst <- apply(dataMatrix, 1, mean)) ##矩阵
 用户   系统    流逝 
0.308  0.032  0.340 
system.time(data_rst <- apply(dataFrame, 1, mean)) ##数据框
 用户   系统    流逝 
0.468  0.144  0.613 

可以看出data.frame格式比起Matrix格式速度慢上一倍左右。所以尽量使用更加简单的数据格式进行数据操作。

*pply簇

*pply簇相比与for循环在R中速度要快,无聊时可以尝试一下,它并且能够有效的缩减代码量和使代码更加容易修改。apply还有另外的好处是可揭示R的内在并行性。

  • 在parallel包中,它提供了parSapply(), parApply(), parLapply()函数,它们分别对应这sapply,apply,lapply,它使得我们可以快速方便的进行并行运算,并且它是很多并行运算包的基础。此外,它的parSapplyLB(), parApplyLB(), parLapplyLB()还提供负载均衡,即当每个并行任务花费的时间都不相同时,十分管用。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值