R官方入门教程(9)分组表达式、条件和循环语句

R是一门著名的可用于数据和统计分析的程序语言,本文翻译自R软件官方文档教程An Introduction to R,仅供学习和参考。

9 分组表达式、条件和循环语句

9.1 分组表达式

R 是一种基于表达式的语言,因为它唯一的命令语句就是能够返回结果的函数或表达式。甚至赋值也是一个表达式,这个表达式的结果就是被赋的值。这个结果也可以用在任何可以使用表达式的地方。也就是说,嵌套表达式是存在的。

表达式可以用大括号组合在一起,{expr_1; ...; expr_m},在这种情况下,整个表达式组的值是组中最后一个表达式的计算结果。这样的一个表达式组也是一个表达式,也就是说,它本身也可以包含在大括号中并用作更大表达式的一部分。

9.2 控制语句

9.2.1 条件执行:if语句

if语句的基本形式为:

> if(逻辑表达式) 操作表达式1 else 操作表达式2

其中,逻辑表达式必须计算出一个逻辑值。如果为TRUE,执行操作表达式1,语句的结果是操作表达式1的结果。否则执行操作表达式2,语句的结果是操作表达式2的结果。

逻辑运算符 && (与)和 ||(或)通常用作 if 语句中条件的一部分。值得注意的是,与之类似的&|会逐元素应用于向量,而&&||只适用于长度为1的向量,并且只在必要时才会计算它们的第二个参数。

有一个 if/else 语句的矢量化版本,即 ifelse() 函数。它具有 ifelse(condition, a, b) 的形式,并返回一个与 condition 长度相同的向量,如果 condition[i] 为真,则结果向量的对应元素为 a[i],否则为 b[i]

9.2.2 循环语句:for、repeat和while

for循环语句的基本形式为:

> for(变量名 in 向量表达式) 循环表达式

其中,循环表达式常常为分组表达式,而且在循环表达式中会使用到临时变量变量名for循环会将向量表达式结果的元素逐个赋给变量名,然后循环执行循环表达式

假设ind 是一个类因子,我们希望在各类中生成单独的 y 与 x 的关系图。这里可以使用 coplot()函数, 它将生成与每个因子Levels相对应的图。另一种方法是利用循环语句将所有绘图显示在一个显示器中,如下所示:

> x <- c(1,3,4,5,2,2,5,6,7,9,4,6)
> y <- c(3,2,1,2,4,5,3,6,4,8,5,5)
> ind <- factor(c("A","B","A","B","B","A","B","A","B","A","A","B"))
> xc <- split(x, ind)
> xc
$A
[1] 1 4 2 6 9 4

$B
[1] 3 5 2 5 7 6
> yc <- split(y, ind)
> for (i in 1:length(yc)) {
plot(xc[[i]], yc[[i]]);	# 绘制各类的散点图
abline(lsfit(xc[[i]], yc[[i]]));	# 画出拟合直线
}

<img
src="C:\Users\lihui\AppData\Roaming\Typora\typora-user-images\image-20230429225138891.png" alt="image-20230429225138891" style="zoom: 67%;" />

请注意函数 split(),它生成一个向量列表,该向量列表是根据一个因子指定的类别拆分一个较大的向量而获得的。这是一个有用的函数,主要用于箱线图。有关详细信息,请参阅帮助工具。

提醒:与正式的编程语言相比,for() 循环在 R 代码中的使用频率要低得多。

采用“整体对象”视角的代码在 R 中可能更清晰、更快速。

其他循环语句包括

repeat 循环表达式

while (逻辑表达式) 循环表达式

break 语句可用于终止任何循环,可能是异常的。这是终止repeat语句的唯一方法。

next语句可用于中断一次特定的循环并跳到“下一次”循环。相当于Python语言中的continue.

条件语句和循环语句最常在自定义函数时出现。您在之后将见到这点。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值