R语言笔记丨三大法宝:判断、循环、函数

简介: R语言笔记丨三大法宝:判断、循环、函数

本次笔记分享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-

© 资料素材来源于网络,侵权请联系后台删除

往期推荐

1.R语言笔记丨从零学起?环境安装和基础知识

2.资料丨科研软件、实验教程、学习笔记免费下载

3.文献丨转录组RNA seq——青年阶段!

4.Linux笔记丨搭建学习环境,了解基础命令

相关文章
|
2月前
|
数据挖掘 C语言 C++
R语言是一种强大的统计分析工具,提供了丰富的函数和包用于时间序列分析。
【10月更文挑战第21天】时间序列分析是一种重要的数据分析方法,广泛应用于经济学、金融学、气象学、生态学等领域。R语言是一种强大的统计分析工具,提供了丰富的函数和包用于时间序列分析。本文将介绍使用R语言进行时间序列分析的基本概念、方法和实例,帮助读者掌握R语言在时间序列分析中的应用。
55 3
|
4月前
|
数据可视化 数据挖掘 数据处理
R语言函数与自定义函数:提高代码的复用性
【8月更文挑战第27天】 自定义函数是R语言编程中不可或缺的一部分,它们通过封装复杂的逻辑和提供灵活的参数化设计,极大地提高了代码的复用性和可维护性。通过掌握自定义函数的基本语法和高级技巧,我们可以编写出更加高效、可读的R语言代码,从而更好地应对复杂的数据分析和统计建模任务。
|
7月前
|
图形学
R语言其他相关函数(各函数解析含实例,可供查询)
R语言其他相关函数(各函数解析含实例,可供查询)
218 0
|
7月前
R语言绘图相关函数(含实例)
R语言绘图相关函数(含实例)
71 0
|
7月前
|
数据可视化
R语言用非凸惩罚函数回归(SCAD、MCP)分析前列腺数据
R语言用非凸惩罚函数回归(SCAD、MCP)分析前列腺数据
|
7月前
|
数据可视化
R语言可视化渐近正态性、收敛性:大数定律、中心极限定理、经验累积分布函数
R语言可视化渐近正态性、收敛性:大数定律、中心极限定理、经验累积分布函数
|
7月前
|
算法 Windows
R语言广义二次跳跃、非线性跳跃扩散过程转移函数密度的估计及其应用
R语言广义二次跳跃、非线性跳跃扩散过程转移函数密度的估计及其应用
|
7月前
|
数据可视化
R语言广义相加(加性)模型(GAMs)与光滑函数可视化
R语言广义相加(加性)模型(GAMs)与光滑函数可视化
|
7月前
|
机器学习/深度学习 算法 数据可视化
R语言用标准最小二乘OLS,广义相加模型GAM ,样条函数进行逻辑回归LOGISTIC分类
R语言用标准最小二乘OLS,广义相加模型GAM ,样条函数进行逻辑回归LOGISTIC分类
|
7月前
|
数据可视化
R语言中使用非凸惩罚函数回归(SCAD、MCP)分析前列腺数据
R语言中使用非凸惩罚函数回归(SCAD、MCP)分析前列腺数据
下一篇
DataWorks