R语言编程结构

函数与控制结构相关:
for结构
for (var in seq) statement
例如:
for (i in 1:10) print(i)
while结构:
while (cond) statement
repeat结构:
repeat statement
repeat是用来重复执行statement部门的函数,需要配合break来使用,否则无法结束循环。
例如:
i<-1
repeat{
i<-i+1
if(i>10) break
}
if-else结构:
if (cond) statement
if (cond) statement1 else statement2
ifelse结构:
ifelse (cond, statement1, statement2)
switch结构:
switch (expr,...)
例如:
> feelings=c("sad","afraid")
> for (i in feelings)
+ print(
+ switch(i,
+ happy="I am glad you are happy",
+ afraid="There is nothing to fear",
+ sad = "Cheer up",
+ angry = "Calm down now"
+ )
+ )
[1] "Cheer up"
[1] "There is nothing to fear"
自定义函数:
myfunction = function(arg1,arg2,...){
statements
return(object)
}
创建二元操作符 % anything %
> "%!%" <- function(X, y) { ... }
break,next
break的作用和别的语言一样,就不说了。
next的作用和java中continue的作用一样。
return():
如果控制语句中需要使用到return的时候,return的括号是必不可少的。
基本运算符
formals(FUN)函数和body(FUN)函数:
formals函数用来查看FUN函数的参数,body函数用来查看FUN函数的函数体
page(FUN)函数和edit(FUN):
page函数用来查看代码比较长的FUN的源代码。
edit函数可以直接调出文本编辑器来编辑FUN函数。
parent.frame(n):
这个函数用来查看当前命名空间的上n层空间的名字。


语法及概念说明:
在R中的向量,dataFrame中,使用负数索引有特别的用途。
负数索引说明剔除索引位绝对值对应元素后剩下的元素。
算术表达式中使用向量将会对该向量的每一个元素都进行同样算术运算。出现在同一个表达式中的向量最好是长度一致。如果他们的长度不一样,该表达式的值将是一个和其中最长向量等长的向量。表达式中短的向量会被 循环使用(recycled )(可能是部分的元素 )以达到最长向量的长度。
R语言数列的计数从“1”开始,不是从“0”开始
数据向量( data vector )的值在数组中的排列顺序采用 FORTRAN 方式的数组
元素次序,即 \ 按列次序 " ,也就是说第一下标变化最快,最后下标变化最慢。
假定数组 a 的维数向量是 c(3,4,2) ,则 a 中有 3*4*2 = 24 元素,依次为 a[1,1,1],
a[2,1,1], ..., a[2,4,2], a[3,4,2]
如果想在一个函数里面全局赋值或者永久赋值,可以采用 \强赋值 " superassignment操作符 <<- 或者采用函数assign()
R语言将函数也定义为对象(和scala差不多),所以函数名可以作为对象返回。
函数的参数可以是别的函数:
置换函数:
当我们遇到形如:
g(u)<-v
R语言会尝试用以下方式执行:
u<-"g<-"(u,value=v)
(使用双引号是因为函数包含特殊符号)事实上,当我们使用
> a[1]
[1] FALSE
> a[1]<-TRUE
的时候,也是使用了函数"["()读向量元素和置换函数"[<-"()用于写操作:
例子:
newbookvec<-function(x){
tmp<-list()
tmp$vec<-x
tmp$wrts<-rep(0,length(x))
class(tmp)<-"bookvec"
return(tmp)
}

"[.bookvec"<-function(bv,subs){
return(bv$vec[subs])
}

"[<-.bookvec"<-function(bv,subs,value){
bv$wrts[subs]<-bv$wrts[subs]+1
bv$vec[subs]<-value
return(bv)
}

> b<-newbookvec(c(3,3,4,5,6,7))
> b[2]
[1] 3
> b[2]<-5
> b[2]
[1] 5
定义二元运算符
“%a2b%”<-function(a,b) return(a+2*b)

3%a2b%5
输出:13

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值