R语言编程结构
Posted 拱头
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 |
以上是关于R语言编程结构的主要内容,如果未能解决你的问题,请参考以下文章
R语言使用ggplot2包使用geom_dotplot函数绘制分组点图(改变分组的次序)实战(dot plot)
R语言使用ggplot2包使用geom_violin函数绘制分组小提琴图(自定义分组的次序)实战
R语言使用ggplot2包geom_jitter()函数绘制分组(strip plot,一维散点图)带状图(改变分组次序)实战
R语言使用lm函数拟合多元线性回归模型假定预测变量没有交互作用(Multiple linear regression)
R语言使用lm函数拟合多元线性回归模型假定预测变量之间有交互作用R语言使用effects包的effect函数查看交互作用对于回归模型预测响应变量的影响
R语言使用lm函数拟合多元线性回归模型假定预测变量之间有交互作用R语言使用effects包的effect函数查看交互作用对于回归模型预测响应变量的影响