温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

R语言控制结构是什么/用法

发布时间:2021-03-15 10:39:29 来源:亿速云 阅读:204 作者:TREX 栏目:开发技术

本篇内容主要讲解“R语言控制结构是什么/用法”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“R语言控制结构是什么/用法”吧!

if(condition) 
	true_expression 
else 
	false_expression
if(condition) 
	expression

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

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

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

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

x = 10
y = c(8, 10, 12, 3, 17)

if(x < y){
 x
}else{
 y
}
[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函数

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

switch函数

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

循环语句

repeat

创建交互应用程序时用到

for

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

for(var in list) expression

  • 循环内的计算结果不打印在屏幕上,除非显式地调用print

  • var变量在命令环境中是变化的

循环扩展

迭代器iterators

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

install.packages("iterators")

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

iter函数创建迭代器:

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

  • obj:指定对象

  • by:

  • chunksize:

  • checkFunc:指定一个过滤迭代器返回值的函数

  • recycle:指定当对象元素迭代完之后是否对迭代进行重置

  • ...:

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

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

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

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循环

install.packages("foreach")

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

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

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%:并行执行表达式

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语言控制结构是什么/用法”有了更深的了解,不妨来实际操作一番吧!这里是亿速云网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI