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语言控制结构知识点总结的文章就介绍到这了,更多相关R语言控制结构详解内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

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

    if(condition) true_expression else false_expression if(condition) expression 因为表达式expression, true_expression, false_expression并非总是被执行,因此if函数的类型是special > typeof(`if`) [1] "special" 在R中.条件语句不是向量型运算 如果条件语句是由一个以上的逻辑值组成的向量,那么执行语句时只会用到向量中的第一个元素 x

  • R语言“循环”知识点详解

    可能有一种情况,当你需要执行一段代码几次. 通常,顺序执行语句. 首先执行函数中的第一个语句,然后执行第二个语句,依此类推. 编程语言提供允许更复杂的执行路径的各种控制结构. 循环语句允许我们多次执行一个语句或一组语句,以下是大多数编程语言中循环语句的一般形式 - R编程语言提供以下种类的循环来处理循环需求. 单击以下链接以检查其详细信息. Sr.No. 循环类型和描述 1 repeat循环 多次执行一系列语句,并简化管理循环变量的代码. 2 while循环 在给定条件为真时,重复语句或语句组.

  • R语言表达式知识点总结

    R提供的组合表达式的结构: 分号 括号 花括号 分离型表达式 x = 1 y = 2 z = 3 x = 1; y = 2; z = 3 括号 括号会返回括号内表达式的执行结果 花括号 花括号用于执行一些列表达式(由换行符或者分号隔开),并返回最后一个表达式的执行结果 {expression_1; expression_2; ... ; expression_ } (笔记:函数花括号内的符号相当于局部变量) 花括号的底层操作是调用{} 到此这篇关于R语言表达式知识点总结的文章就介绍到这了,更多相

  • R语言运算符知识点讲解

    运算符 运算符:包含一个或者两个参数的无括号的参数 符号 说明 + - * ^ %% 取模运算 %/% 整除运算 可以定义自己的二元运算符 `%myop%` = function(a, b){ 2*a + 2*b } > 1 %myop% 1 [1] 4 一些特殊的语言结构也是二元运算符 例如:赋值运算符<-,索引[],函数调用max(a, b) 运算顺序 运算符的优先级 (按优先级排序) 运算符 描述 ({ 函数调用和分组表达式 [ [[ 索引 :: ::: 访问命名空间中的变量 $ @ 成

  • R语言常量知识点总结

    R语言基本的数据类型有数值型, 逻辑型(TRUE, FALSE),文本(字符串). 支持缺失值,有专门的复数类型. 常量是指直接写在程序中的值. 数值型常量包括整型.单精度.双精度等,一般不需要区分.写法如123, 123.45, -123.45, -0.012, 1.23E2, -1.2E-2等. 为了表示123是整型,可以写成123L. 字符型常量用两个双撇号或两个单撇号包围,如"Li Ming"或'Li Ming'. 字符型支持中文,如"李明"或'李明'. 国

  • R语言时间序列知识点总结

    时间序列对象:变量随着时间变化 时间序列的回归函数(例如ar或arima)通常以时间序列作为参数 许多绘图函数都有针对时间序列对象的特殊方法 ts函数创建时间序列对象 ts(data = NA, start = 1, end = numeric(0), frequency = 1, deltat = 1, ts.eps = getOption("ts.eps"), class = , names = ) data参数指定时间序列的观测值,其他参数指定观测值的起始区间 ts函数参数的含义

  • R语言向量知识点及实例讲解

    有常见的六种基本的向量类型 创建向量 设定recursive = T,c函数可以从其他数据结构中递归形成向量 > v <- c(.295, .300, .250, .287, list(.102, .200, .303), recursive = T) > v [1] 0.295 0.300 0.250 0.287 0.102 0.200 0.303 > typeof(v) [1] "double" > v <- c(.295, .300, .250

  • R语言符号知识点汇总

    符号 当在R中定义一个变量时,实际上就是在环境中将一个符号赋给一个值 x <- 1 实际上就是在全局环境中将符号x赋给一个长度为1,值为1的向量对象 当R解释器对表达式求值时,它会处理所有的符号 如果将若干个符号组合成一个对象,R会解析成该对象的每个符号 > x <- 1 > y <- 2 > z <- 3 > > (v <- c(x, y, z)) [1] 1 2 3 > > #由于v已定义,更改x的值并不会使v的值也相应变化 &g

  • R语言属性知识点总结及实例

    属性(attribute):R中对象具备的特性 特性描述了所代表的内容以及R解释该对象的方式 很多时候两个对象之间的唯一差别在于它们的属性不同 常见的属性 属性 描述 class 对象的类 comment 对象的注释,一般用于描述对象的含义 dim 对象的维度 dimnames 与对象的每个维度相关的名字 names 返回对象的名字属性.返回结果取决于对象的类型.对于数据框对象会返回数据框的列名;对于数组会返回数组中被命名元素的名字 row,names 对象的行名(dimnames相关) tsp

  • R语言数据类型知识点总结

    通常,在使用任何编程语言进行编程时,您需要使用各种变量来存储各种信息. 变量只是保留值的存储位置. 这意味着,当你创建一个变量,你必须在内存中保留一些空间来存储它们. 您可能想存储各种数据类型的信息,如字符,宽字符,整数,浮点,双浮点,布尔等.基于变量的数据类型,操作系统分配内存并决定什么可以存储在保留内存中. 与其他编程语言(如 C 中的 C 和 java)相反,变量不会声明为某种数据类型. 变量分配有 R 对象,R 对象的数据类型变为变量的数据类型.尽管有很多类型的 R 对象,但经常使用的是

随机推荐