注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

云之南

风声,雨声,读书声,声声入耳;家事,国事,天下事,事事关心

 
 
 

日志

 
 
关于我

专业背景:计算机科学 研究方向与兴趣: JavaEE-Web软件开发, 生物信息学, 数据挖掘与机器学习, 智能信息系统 目前工作: 基因组, 转录组, NGS高通量数据分析, 生物数据挖掘, 植物系统发育和比较进化基因组学

网易考拉推荐

6_R的函数  

2009-12-04 11:08:49|  分类: R&Bioconductor |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

6_R的函数

Author: F.Xu

22 Jun

#本来说上周就把这章写上的,没想到工作突然忙起来了……    呵呵,总算到昨天为止刚刚算是小小的告一段落,今天就抽时间写它一章~~

今天就来聊一聊R的函数

R中有很多的标准自带的函数,也有很多的由扩展包支持的函数。今天我们主要看一看R中标准自带的函数。

首先简单定义一下什么是函数:

在R中,所谓函数实际上就是一系列程序的组合。

为了能够更深刻的理解这句话,我将在下面这个例子中先一步一步的计算几个数的平均值;再讲如何把这些可以重复利用的运算步骤改写成为自己服务的函数;最后,我们再看一下R中已经为我们准备好了的求平均值的函数的用法:

1,一段程序
我们用R计算下面这5个数的和
23  34  56  78  89
在R中,我们刚开始可能会这样写:
>x <- c( 23, 34, 56, 78, 89 )
>z <- 0
>for( i in 1:5 ){
>z <- z + x[i]
>}
>z <- z/5
>z
[1]56

经过我们一步一步的计算,得到了最后的结果56。

但如果每次遇到类似这样的求平均的运算,我们都这样的用手去一步一步的输入的话,好像很麻烦,呵呵,还好,R可以帮助我们这些懒人,用函数的方式来解决这个问题。

2,一段程序变函数
我们所想要的是,只要输入数据就可以自动的帮我们算出平均值的结果。下面我们来看看怎样在R中写一个自己的函数。

> mymean <- function(x){
+ y <- 0
+ for(i in 1:length(x)){
+ y <- y+ x[i]
+ }
+ y <- y/length(x)
+ }

现在,属于我们自己的求平均函数mymean()就完成了,我们可以用下面这段程序来检查一下看有没有什么错误。

>x <- c( 23, 34, 56, 78, 89 )
>y <- mymean(x)
>y
[1]56

呵呵,结果一致。 我们以后就可以用这个自己制作的函数来计算其他的各种求平均运算了。

3,利用R自带的函数
其实像求平均、求和、最大值、最小值甚至自然指数、平方根等运算在R中都已经有自带的函数。比如R中自带的求平均函数:mean()

>x <- c( 23, 34, 56, 78, 89 )
>y <- mean(x)
>y
[1]56

使用方法和我们自己写的函数的使用方法是一样的。

好,我们到现在为止就大概的看了看函数的定义,如何制作自己的函数以及如何使用R中自带的函数。

接下来,我就把R中自带的函数列一个简表,以方便大家查询。(这里并不是全部,只是个人认为比较常用的,希望对初学者有所帮助。……也许以后会慢慢更新、补全,呵呵……)

基本统计量:

mean
求平均值
 
max
 求最大值
 
min
 求最小值
 
range
 求范围(最大值-最小值)
 
median
 求中央值
 
var
 求分散
 

数据操作:

matrix
 建立行列式
 
list
 建立列表
 
is.*****

****是数据的类型名
例如:
 is.matrix(x)语句的意思是问R:“x是不是行列式?”。
 如果x是行列式的话R将返回”TRUE”,如果不是R将返回”FALSE”
 
as.****
****是数据的类型名
 as.matrix(x)的作用是不管x以前是什么类型的,R都要用这条语句来把x转换成行列式。

nrow
 返回对象的行数:nrow(x)
 
ncol
 返回对象的列数:ncol(x)
 
length
 返回对象的长度
 
colnames
 返回列名
 
rownames
 返回行名
 
 
简单计算:

abs
 计算绝对值
 abs(-2)
 
exp
 求自然指数
 exp(1)=2.7182…
 
sqrt
 求平方根
 sort(4)
 
log
 求自然对数
 log(exp(1))=1
 
log10
 常用对数
 log10(10)=1
 
cos,sin,tan
 三角函数
 
acos,asin,atan
 逆三角函数
 
round
 四舍五入
 round(3.1415 , 3)= 3.142
 
  评论这张
 
阅读(688)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2016