您所在位置: 网站首页 / (word完整版)第四章--R编程实践.doc / 文档详情
(word完整版)第四章--R编程实践.doc 立即下载
2024-09-09
约8.9千字
约9页
0
96KB
举报 版权申诉
预览加载中,请您耐心等待几秒...

(word完整版)第四章--R编程实践.doc

(word完整版)第四章--R编程实践.doc

预览

免费试读已结束,剩余 4 页请下载文档后查看

5 金币

下载文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

(word完整版)第四章R编程实践
(word完整版)第四章R编程实践
PAGE\*MERGEFORMAT9

(word完整版)第四章R编程实践
第四章R编程实践

自此,我们已经对R的功能有个全面的了解。一些数据分析都是在R对话窗口(RConsole)中进行的,但对于复杂的数据分析显然是不行方便的。下面将从统计语言和编程角度来说明,我们将会了解一些在R编程实践中采用的简单的概念。
循环和向量化
相比下拉菜单式的程序(R下开发的统计包RCommander),R的一个优势在于它可以把一系列连续的操作简单的程序化.这一点上和所有其他计算机编程语言是一致的,但R有一些特性使得非专业人士也可以很简单的编写程序.
和其他编程语言一样,R有一些和C语言类似的控制结构.
(一)控制结构
1。条件语句:条件语句常用于避免除零或负数等数学问题.它有两种形式:
1)if(条件)表达式1else表达式2
2)ifelse(条件,yes,no)
例如:
if(x>=0)sqrt(x)elseNA
ifelse(x>=0,sqrt(x),NA)
2。循环:有三种形式:
1)for(变量in向量)表达式
2)while(条件)表达式
3)repeat表达式
例如:
假定我们有一个向量x,对于向量x中值为b的元素,我们把0赋给另外一个等长向量y的对应元素,否则赋1。我们首先创建一个与向量x等长的向量y:
y〈—numeric(length(x))
for(iin1:length(x))if(x[i]==b)y[i]<-0elsey[i]<-1
几个指令可以放在一个大括弧里面:
for(iin1:length(x)){
{
y[i]〈-0
…
}
x<—rnorm(10,—5,0.1)
y<-rnorm(10,5,2)
X<-cbind(x,y)#矩阵X的列名保持”x”和”y"
for(iin1:5/2)z[i]〈—x[i]+y[i]
另外一种可能的情况是当条件为真的时候一条指令才执行:
while(myfun>minimum){
…
}
count〈-0
while(count<10){
print(count)
count=count+1
}
#如果设置不正确while循环可以能导致无限循环,要小心
#computeEstimate()
x0〈-1
tol<—1e-5
repeat{
x1<—rnorm(1,1,2)
if(abs(x1—x0)〈tol){
break
}else{
x0〈-x1
}
}
#next,return
for(iin1:100){
if(i〈=20){
##skip
next
}
#dosomthinghere
}
3.分支控制语句
switch(statement,list)
switch(2,’banana’,’apple’,'other’)
num〈—10
mode<-num%%3#模3
cat('modeis',switch(mode+1,0,1,2),'\n’)
例子见“客观赋权法。R".
(二)向量化
但是,由于R的一些特性,在很多情况下循环和控制结构可以避免:向量化.向量化使得循环暗含在表达式中,前面的例子中已经多次采用了.比如,两个向量之和:
>z〈-x+y
这种加和可以通过循环结构来实现,就像很多编程语言采用的策略一样:
>z<—numeric(length(x))
〉for(iin1:length(z))z[i]<-x[i]+y[i]
在这个例子中,由于要用到向量的下标系统,有必要预先创建一个向量z.
显然,这种显式的循环仅仅用于向量x和y等长的情况:如果不是这样程序代码需要改变,而第一种表达方式在任何情况下都成立(如果对R的向量循环使用方式不了解的话,x和y不等长时要小心一点)。
条件语句(if…else)可以用逻辑索引向量代替;同样上面的例子:
〉y[x==b]〈—0
〉y[x!=b]<—1
除了让代码更简洁,向量化的表达式在计算上效率更高,特别是大数据量的数据集.
(三)运用apply等函数
有多个’apply'形式的函数用于避免使用代码的显式循环结构。apply作用于矩阵的行或者/和列,它的语法规则是apply(X,MARGIN,FUN,…),其中X是一个矩阵,MARGIN表明是对行(1)还是列(2),或者二者(c(1,2))进行操作,FUN是一个函数(或操作符,但是这种情况下操作符要在一个括弧里面指定),…是函数FUN可能的参数。一个简单的例子如下。
>x<-rnorm(10,-5,0.1)
>y〈-rnorm(10,5,2)
>X<-cbind(x,y)#矩阵X的列名保持”x"和"y”
〉apply(X,2,mean)
lapply()可以用于一个列表对象:它的语法类似apply并且返回
查看更多
单篇购买
VIP会员(1亿+VIP文档免费下)

扫码即表示接受《下载须知》

(word完整版)第四章--R编程实践

文档大小:96KB

限时特价:扫码查看

• 请登录后再进行扫码购买
• 使用微信/支付宝扫码注册及付费下载,详阅 用户协议 隐私政策
• 如已在其他页面进行付款,请刷新当前页面重试
• 付费购买成功后,此文档可永久免费下载
全场最划算
12个月
199.0
¥360.0
限时特惠
3个月
69.9
¥90.0
新人专享
1个月
19.9
¥30.0
24个月
398.0
¥720.0
6个月会员
139.9
¥180.0

6亿VIP文档任选,共次下载特权。

已优惠

微信/支付宝扫码完成支付,可开具发票

VIP尽享专属权益

VIP文档免费下载

赠送VIP文档免费下载次数

阅读免打扰

去除文档详情页间广告

专属身份标识

尊贵的VIP专属身份标识

高级客服

一对一高级客服服务

多端互通

电脑端/手机端权益通用