首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

R中的向量化计算

R是函数式编程语言,其中向量化编程思维是其中的一个精髓,正确使用它能帮你省掉一些不必要的代码,并大幅提升运算效率。首先我们来看看什么是向量化计算。

向量化计算

向量化计算是一种特殊的并行计算的方式,相比于一般程序在同一时间只执行一个操作的方式,它可以在同一时间执行多次操作,通常是对不同的数据执行同样的一个或一批指令,或者说把指令应用于一个数组或者向量。

我们来看看在R中的向量化计算:

正如你看到的,向量化计算在R中的表现形式就是这么简单。下面我们来用一个简单的例子做测试看看向量化计算对计算效率的提升效果。

计算一个数组的平方和

循环版

如果你刚接触R或者从其他语言转过来,可能你会写如下的for循环代码:

向量化版

它有一种更为简便的写法,直接采用base包中自带的sum函数来求和。

我们对以上两种写法做性能测试发现,当计算的向量达到百万级别时,以上两者效率相差竟超过30倍。

以上代码是在win10系统上运行的,电脑配置的i5处理器以及8G内存,R是64位3.2.5版本。

所以,当我们在编写涉及到循环运算的代码时尽量采用一些向量化的函数对其进行处理,少些显式循环,这样既可以减少代码量,使得代码更为简洁,还可以大幅提高代码的运行效率,何乐而不为呢?

R中的向量化计算可以通过一些向量化的函数实现,下面介绍一下向量化计算的一些常用函数:

向量化函数分类

我把向量化的函数分为以下三类:

1.base自带函数向量操作

sum

mean

max

min

median

cumsum

cummax

cummin

cumprod

逻辑操作

any

all

ifelse

矩阵操作

colSums

colMeans

rowSums

rowMeans

2.apply函数簇

apply

可以对矩阵或者数组的同一维度应用相同的函数并得到汇总后的结果。下面我们用来实现上述矩阵操作类似的功能:

中的函数除了采用系统自带的函数外,还可以自行定义:

sapply

对每个元素应用相同的函数,有点像python里面的map函数:

lapply

对list类型的数据做操作

aggregate

数据汇总

3.plyr以及dplyr高级函数簇小结

以上大多数向量化函数计算效率高的本质是其底层做了并行计算。我们在实际运用这些函数的时候,需要了解其适用场景,因地制宜,方能真正实现效率最大化。

本文来自№→★飞刀的微信公共帐号“数据挖掘与R语言”,用微信添加数据挖掘与R语言公众号,即可订阅。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180731G0XAH400?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券