本次笔记分享R语言中判断语句、循环、函数使用方法。
R语言判断语句
判断结构指定一个或多个要评估或测试的条件,以及条件为真时要执行的语句和条件为假时要执行的语句。
R语言中的判断语句:
- if
> if(3 > 2) {print("ok")} [1] "ok"
if语句可以判断逻辑表达式的正确性,若正确执行{}
内的代码,若错误不执行。
- if else
> if(3 < 2) {print("ok")} else {print("no")} [1] "no"
与if语句相似,else
后的语句在表达式为FALSE时执行。这种结构可以嵌套完成多重判断。
- switch
> wo="ren" > switch( wo, ren = "good people", tere = "sun day" ) [1] "good people" > switch(3,"das","dasd","dsfs","fsdg","sdf") [1] "dsfs"
语法结构switch(exp, case1, ....)
,如果exp表达式为整数时,返回这个位置的case值。如果exp为变量时,返回对应变量名case的值。若没有找到,则返回NULL
。
R语言循环结构
有时候,可能需要多次执行同一块代码。语句是按顺序执行的,函数中的第一个语句先执行,接着是第二个语句,依此类推。R语言提供的循环类型:repeat、while、for;R语言提供的循环控制语句:break、next。
循环类型
- repeat:循环执行,直到条件为真时退出,如下。
repeat { // 相关代码 // 相关代码 if(条件) { break } }
示例:定义一个计数变量cnt
,重复打印文本内容,每一次计数+1
,直到第四次退出循环,共打印四行内容。
bianliang = c("shengxin","fenxi","biji") cnt = 2 repeat { print(bianliang) cnt = cnt + 1 if (cnt > 5){ break } } [1] "shengxin" "fenxi" "biji" [1] "shengxin" "fenxi" "biji" [1] "shengxin" "fenxi" "biji" [1] "shengxin" "fenxi" "biji"
- while:只要给定条件为真,则重复执行目标语句。如下
while(条件) { 待执行语句; }
示例:与上一条类似,定义cnt为计数变量,然后设置条件打印文本内容。
bianliang = c("shengxin","biji") cnt = 2 while (cnt < 5) { print(bianliang) cnt = cnt + 1 } [1] "shengxin" "biji" [1] "shengxin" "biji" [1] "shengxin" "biji"
- for:可以重复执行指定语句,重复次数可在 for 语句中控制。如下:
for (value in vector) { statements }
R 语言的 for 循环特别灵活,不仅可以循环整数变量,还可以对字符向量,逻辑向量,列表等数据类型进行迭代。
> v = LETTERS[1:3] > for (i in v){ + print(i) + } [1] "A" [1] "B" [1] "C"
循环控制
- break:跳出循环,插入在循环体中,用于退出当前循环或语句,并开始脚本执行紧接着的语句。如果循环嵌套,
break
语句将停止最内层循环的执行,并开始执行外层的循环语句。 - next:跳过当前循环,开始下一次循环。示例如下,输出前六个大写字母,当D时跳过当次循环,但不结束循环。
> v <- LETTERS[1:6] > for(i in v){ + if (i == "D"){ + next + } + print(i) + } [1] "A" [1] "B" [1] "C" [1] "E" [1] "F"
R语言函数
函数能够执行任务语句,R语言本身有很多函数,也可以自己创建函数,函数具有名称、返回值类型、参数等信息。
定义函数
function_namne函数名 <- function(a1,a2,...参数){ #函数主体 } return() #返回值
- 自定义函数
用于特定功能,能够直接调用自定义函数。例如定义一个带参数a,输出1-a每个数平方值的函数,也可以不带参数,输出的内容固定,如下
带参数: newfunction = function(a){ for(i in 1:a){ b = i^2 print(b) } } > newfunction(3) [1] 1 [1] 4 [1] 9 不带参数: jewel = function(){ print("hao") } jewel() [1] "hao"
- 带参数的函数
定义带有参数的函数,需要指定的参数名称,默认按照参数设置顺序执行,若不按顺序则需要输入参数名称。
newf = function(a,b){ result = a + b print(result) } newf(3,4) #不带名称 newf(a = 3,b = 4) #带名称
如果创建函数时指定了默认参数,那么调用时不输入参数就会输出默认结果。
newf = function(a = 3,b = 4){ result = a + b print(result) } newf() #不传递参数,输出7 newf(5,6) #传递参数,输出11
- 懒惰计算的函数
懒惰计算将推迟计算工作直到系统需要这些计算的结果。如果不需要结果,将不用进行计算。R语言默认开启。
jewel = function(a,b){ #需要两个输入参数 print(a) print(b) #b在函数中被调用 } jewel(3) #只输入了一个参数,b没有参数 [1] 3 Error in print(b) : argument "b" is missing, with no default #报错:缺少一个参数b,调用时无法识别 newf = function(a){ 1 #a在函数中没有被调用 } newf() #缺少参数a [1] 1 #不报错:因为函数并没有调用参数a,缺少也没事儿
-end-
© 资料素材来源于网络,侵权请联系后台删除
往期推荐