5.4 控制流

 语句(statement)是一条单独的R语句或一组复合语句(包含在花括号{ } 中的一组R语

句,使用分号分隔);

 条件(cond)是一条最终被解析为真(TRUE)或假(FALSE)的表达式;

 表达式(expr)是一条数值或字符串的求值语句;

q    序列(seq)是一个数值或字符串序列。

q  5.4.1重复和循环

q  1.for结构  循环重复地执行一个语句,直到某个变量的值不再包含序列seq中为止

q  语法:for(var in seq) statement

q  2.while结构  循环重复地执行一个语句,知道条件不为真为止

q  语法:while(cond) statement

q  5.4.2条件执行

q  1.if-else结构  控制结构if-else在某个给定条件为真时执行语句。也可以同时在条件为假时执行另外的语句。

q  语法:if (cond) statement

q        If(cond)statement1 else statement2

q  2.ifelse结构 是if-else结构比较紧凑的向量化版本

q  语法:ifelse(cond,statement1,statement2) #cond=TRUE 执行statement1;FALSE时执行statement2

q  3.switch结构 根据一个表达式的值选择语句执行

q  语法:switch(expr,…)

q  5.5用户自编函数

q  结构:myfunction<- function(arg1,arg2,…){

q    statements

q    return

q  }

q  注:一旦开始编写无论任何长度和复杂度的函数,优秀调试工具的重要性都会凸显出来。R中有许多实用的内建调试函数,也有许多用户贡献包提供了额外的功能。关于这个话题,一份优秀的参考资料是DuncanMurdoch整理的“Debugging in R”(http://www.stats.uwo.ca/faculty/murdoch/software/debuggingR)。

q  5.6整合与重组 (aggregate & reshape)

q  5.6.1转置

使用函数t()即可对一个矩阵或数据框进行转置。对于后者,行名将成为变量(列)名。

5.6.2整合数据

在R中使用一个或多个by变量和一个预先定义好的函数来折叠(collapse)数据是比较容易的。

调用格式为:aggregate(x,by,FUN)

其中x是待折叠的数据对象,by是一个变量名组成的列表,这些变量将被去掉以形成新的观测,

而FUN则是用来计算描述性统计量的标量函数,它将被用来计算新观测中的值。

5.6.3reshape包

reshape包是一套重构和整合数据集的绝妙的万能工具。

1、  融合

数据集的融合是将它重构为这样一种格式:每个测量变量独占一行,行中带有要唯一确定这个测量所需的标识符变量。例:

Library(reshape)

Md<-melt(mydata,id=(c(“id”,””time”))))

2、  重铸

cast()函数读取已融合的数据,并使用你提供的公式和一个(可选的)用于整合数据的函数将其重塑。调用格式为:newdata<-cast(md,formula,FUN)

其中的md为已融合的数据,formula描述了想要的最后结果,而FUN是(可选的)数据整合函数。

最新文章

  1. java解析XML文件
  2. 第五章 搭建S3C6410开发板的测试环境
  3. 部署Service Manager 2012遇到的2个问题
  4. RabbitMQ 记录
  5. POJ 2887 Big String(块状链表)
  6. javascript,css延迟加载器
  7. php中将文中关键词高亮显示,快捷方式可以用正则
  8. Android中显示网页的多种方式
  9. Robot Framework自动化测试(二)第一个用例
  10. iOS6 自动布局 入门–Auto Layout(转)
  11. Genymotion下载失败解决方法
  12. 时间序列预测之--ARIMA模型
  13. k-临近算法学习
  14. [项目推荐] Corcel 让你在 WordPress 中使用 Laravel
  15. 搭建vue脚手架
  16. spring开启事务时启动报错SAXParseException
  17. Ubuntu下配置使用mysql
  18. .NET本质论 用类型编程
  19. geiUItabBarItem设置图片颜色和title颜色
  20. 修改的select

热门文章

  1. Python安装Mysql驱动出错解决(最新出炉)
  2. Restrictions.or多个条件用法
  3. 移动端和PC端有什么区别
  4. H5的localStorage简单存储删除
  5. redis与spring整合&#183;
  6. 深入分析linux调度机制
  7. 线程之间的通信socketpair【学习笔记】【原创】
  8. Windows7下安装golang语言开发环境和revel框架
  9. bzoj 2750: [HAOI2012]Road【spfa+dfs】
  10. bzoj 3528 [Zjoi2014]星系调查【树链剖分+数学】