楼主: kk22boy
10711 6

[程序分享] R语言编程入门之五:向量化运算 [推广有奖]

  • 8关注
  • 95粉丝

一叶知秋

已卖:9095份资源

学科带头人

51%

还不是VIP/贵宾

-

TA的文库  其他...

计量经济与统计

SSCI、权威 论文写作及投稿经验

威望
1
论坛币
57240 个
通用积分
130.1721
学术水平
437 点
热心指数
492 点
信用等级
393 点
经验
68023 点
帖子
1586
精华
0
在线时间
2192 小时
注册时间
2005-3-10
最后登录
2025-5-25

初级热心勋章 初级信用勋章

楼主
kk22boy 发表于 2013-3-6 16:08:08 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币

R语言编程入门之五:向量化运算


和matlab一样,R语言以向量为基本运算对象。也就是说,当输入的对象为向量时,对其中的每个元素分别进行处理,然后以向量的形式输出。R语言中基本上所有的数据运算均能允许向量操作。不仅如此,R还包含了许多高效的向量运算函数,这也是它不同于其它软件的一个显著特征。向量化运算的好处在于避免使用循环,使代码更为简洁、高效和易于理解。本文来对apply族函数作一个简单的归纳,以便于大家理解其中的区别所在。

所谓apply族函数包括了apply,sapply,lappy,tapply等函数,这些函数在不同的情况下能高效的完成复杂的数据处理任务,但角色定位又有所不同。

apply()函数的处理对象是矩阵或数组,它逐行或逐列的处理数据,其输出的结果将是一个向量或是矩阵。下面的例子即对一个随机矩阵求每一行的均值。要注意的是apply与其它函数不同,它并不能明显改善计算效率,因为它本身内置为循环运算。
m.data <- matrix(rnorm(100),ncol=10)
apply(m.data,1,mean)
lappy()的处理对象是向量、列表或其它对象,它将向量中的每个元素作为参数,输入到处理函数中,最后生成结果的格式为列表。在R中数据框是一种特殊的列表,所以数据框的列也将作为函数的处理对象。下面的例子即对一个数据框按列来计算中位数与标准差。

f.data <- data.frame(x=rnorm(10),y=runif(10))
lapply(f.data,FUN=function(x) list(median=median(x),sd=sd(x)))
sapply()可能是使用最为频繁的向量化函数了,它和lappy()是非常相似的,但其输出格式则是较为友好的矩阵格式。
sapply(f.data,FUN=function(x)list(median=median(x),sd=sd(x)))
class(test)
tapply()的功能则又有不同,它是专门用来处理分组数据的,其参数要比sapply多一个。我们以iris数据集为例,可观察到Species列中存放了三种花的名称,我们的目的是要计算三种花瓣萼片宽度的均值。其输出结果是数组格式。

head(iris)
attach(iris)
tapply(Sepal.Width,INDEX=Species,FUN=mean)
与tapply功能非常相似的还有aggregate(),其输出是更为友好的数据框格式。而by()和上面两个函数是同门师兄弟。

另外还有一个非常有用的函数replicate(),它可以将某个函数重复运行N次,常常用来生成较复杂的随机数。下面的例子即先建立一个函数,模拟扔两个骰子的点数之和,然后重复运行10000次。
game <- function() {
    n <- sample(1:6,2,replace=T)
    return(sum(n))
}
replicate(n=10000,game())最后一个有趣的函数Vectorize(),它能将一个不能进行向量化运算的函数进行转化,使之具备向量化运算功能。


Tags: 入门教程, 编程

By 写长城的诗

二维码

扫码加我 拉你入群

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

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

关键词:R语言编程 编程入门 语言编程 R语言 向量化 r语言编程 r语言做量化分析 R语言编程入门向量化运算

已有 3 人评分经验 论坛币 学术水平 热心指数 信用等级 收起 理由
迷途mitu + 1 + 1 + 1 精彩帖子
ltx5151 + 20 + 20 根据规定进行奖励
epoh + 3 + 3 + 3 对论坛有贡献

总评分: 经验 + 20  论坛币 + 20  学术水平 + 4  热心指数 + 4  信用等级 + 4   查看全部评分

本帖被以下文库推荐

  • · R学习|主题: 262, 订阅: 161
如果该贴对您有些许帮助,希望你能回复一下或者评一下热心指数!谢谢!

沙发
ethan69 发表于 2013-3-8 10:46:22
THX~学习了~

藤椅
愿媛 发表于 2013-5-21 16:07:51
谢谢分享

板凳
☆Justforyou 发表于 2013-12-8 13:58:12
学习啦~~顶楼主!

报纸
糖糖78 发表于 2013-12-29 20:25:57
多谢分享~ 学习了~
Offer, come here!

地板
蒲虎fly 发表于 2014-5-19 16:53:57
不错的资料,i值得学习
爱拼才会赢,笨鸟前飞,勤劳补拙。

7
wuya100 发表于 2014-8-25 08:40:34
谢谢分享!!!!

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-27 06:53