服务器之家:专注于服务器技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - R语言 - R语言控制结构知识点总结

R语言控制结构知识点总结

2021-12-29 14:27kancloud R语言

在本篇文章里小编给大家整理一篇关于R语言控制结构知识点总结内容,有兴趣的朋友们可以学习参考下。

?
1
2
3
4
if(condition)
    true_expression
else
    false_expression
?
1
2
if(condition)
    expression

因为表达式expression, true_expression, false_expression并非总是被执行,因此if函数的类型是special

?
1
2
> typeof(`if`)
[1] "special"

在R中.条件语句不是向量型运算

如果条件语句是由一个以上的逻辑值组成的向量,那么执行语句时只会用到向量中的第一个元素

?
1
2
3
4
5
6
7
8
x = 10
y = c(8, 10, 12, 3, 17)
 
if(x < y){
 x
}else{
 y
}
?
1
2
3
4
[1] 8 10 12 3 17
Warning message:
In if (x < y) { :
 the condition has length > 1 and only the first element will be used

想要向量化操作需要使用ifelse函数

?
1
2
> ifelse(x < y, x, y)
[1] 8 10 10 3 10

switch函数

?
1
2
3
swithcheroo.swith = function(x){
 switch(x, a = "alligator", b = "bear" , c = "camel", "moose")
}
?
1
2
3
4
> swithcheroo.swith("a")
[1] "alligator"
> swithcheroo.swith("f")
[1] "moose"

循环语句

repeat

创建交互应用程序时用到

for

用于遍历向量/列表的每一个项目

for(var in list) expression

  • 循环内的计算结果不打印在屏幕上,除非显式地调用print
  • var变量在命令环境中是变化的

循环扩展

迭代器iterators

通过扩展包iterators实现迭代器iterators

?
1
install.packages("iterators")

迭代器可以返回向量,数组,数据框或者其他对象的元素,甚至返回某个函数返回的值

iter函数创建迭代器:

参数:iter(obj, checkFunc = function(...) T, recycle = F, ...)

  • obj:指定对象
  • by:
  • chunksize:
  • checkFunc:指定一个过滤迭代器返回值的函数
  • recycle:指定当对象元素迭代完之后是否对迭代进行重置
  • ...:

nextElem函数:查看下一个迭代项,这个函数会隐式地调用 checkFunc

如果下一个值符合checkFunc,则返回该值

如果不符合,函数将试着返回另外一个值.nextElem函数会继续检查其他值,直到找到一个符合checkFunc的值.如果所有值都迭代完毕,没有元素符合,迭代器会调用停止命令,并返回StopIteration

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
library(iterators)
oneoffive = iter(1:5)
> nextElem(oneoffive)
[1] 1
> nextElem(oneoffive)
[1] 2
> nextElem(oneoffive)
[1] 3
> nextElem(oneoffive)
[1] 4
> nextElem(oneoffive)
[1] 5
> nextElem(oneoffive)
Error: StopIteration

foreach循环

通过foreach包实现foreach循环

?
1
install.packages("foreach")

foreach能够循环遍历某个对象(向量,矩阵,数据框或者迭代器)中的多个元素 ,针对各个元素执行表达式,并返回结果

在foreach函数内部,将元素指定一个临时值,与在for循环中的操作类似

?
1
2
3
4
function (..., .combine, .init, .final = NULL, .inorder = TRUE,
 .multicombine = FALSE, .maxcombine = if (.multicombine) 100 else 2,
 .errorhandling = c("stop", "remove", "pass"), .packages = NULL,
 .export = NULL, .noexport = NULL, .verbose = FALSE)

foreach函数返回一个foreach对象

想要真正地执行循环,需要使用

  • %do%:顺序执行表达式
  • 或%dopar%:并行执行表达式
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
library(foreach)
 
sqrts.1to5 = foreach(i = 1:5) %do% sqrt(i)
sqrts.1to5
[[1]]
[1] 1
 
[[2]]
[1] 1.414214
 
[[3]]
[1] 1.732051
 
[[4]]
[1] 2
 
[[5]]
[1] 2.236068

到此这篇关于R语言控制结构知识点总结的文章就介绍到这了,更多相关R语言控制结构详解内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!

原文链接:https://www.kancloud.cn/sacomplex/rlanguage/315649

延伸 · 阅读

精彩推荐
  • R语言R语言绘制散点图实例分析

    R语言绘制散点图实例分析

    在本篇文章里小编给大家整理的是一篇关于R语言绘制散点图实例分析内容,有需要的朋友们可以学习下。...

    w3cschool6942022-01-06
  • R语言聊聊R语言中Legend 函数的参数用法

    聊聊R语言中Legend 函数的参数用法

    这篇文章主要介绍了聊聊R语言中Legend 函数的参数用法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...

    Gavin姓陈6352021-12-28
  • R语言R语言编程学习绘制动态图实现示例

    R语言编程学习绘制动态图实现示例

    这篇文章主要介绍了R语言编程学习绘制动态图实现示例,有需要的的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪...

    微小冷7652022-01-18
  • R语言R语言中c()函数与paste()函数的区别说明

    R语言中c()函数与paste()函数的区别说明

    这篇文章主要介绍了R语言中c()函数与paste()函数的区别说明,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...

    yiyu_j11152022-01-12
  • R语言R语言创建矩阵的实现方法

    R语言创建矩阵的实现方法

    这篇文章主要介绍了R语言创建矩阵的实现方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随...

    hjk_caesar9462021-12-27
  • R语言R语言-使用ifelse进行数据分组

    R语言-使用ifelse进行数据分组

    这篇文章主要介绍了R语言-使用ifelse进行数据分组,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...

    小力丸12042022-01-10
  • R语言R语言可视化存储矢量图实现方式

    R语言可视化存储矢量图实现方式

    这篇文章主要为大家介绍了R语言存储矢量图的实现方式过程,有需要的朋友可以借鉴参考下,希望能够有所你帮助,祝大家多多进步,早日升职加薪...

    Kanny广小隶9392022-01-20
  • R语言R studio 批量注释的快捷方式

    R studio 批量注释的快捷方式

    这篇文章主要介绍了R studio 批量注释的快捷方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...

    JasonKQLin13342022-01-04