《R语言初学者指南》—简单函数、自定义函数、循环

一、简单函数

table(A):数据透视,A为向量,同类计数

table(A,B):数据透视,A,二维计数

apply(data,1/2,function):data为矩阵或数据框,1为按行拆分计算,2为按列拆分计算。输出结果跟函数有关,如函数每次返回一个值,则最终apply返回向量;如函数每次返回一个向量,则最终apply返回矩阵。

tapply(X=A,Index=B,Fun=C):

数据透视,以B为纲对A进行各种计算。A、B为向量,C为计算方法如length、mean、sum。

sapply(X,function):apply(,2,),X必须为数据框

lapply(X,function):应用于list

summary():对象可以是向量、矩阵、数据框,返回每列最小值、第一四分位数、中位数、平均值、第三四分位数、最大值。

colsums(,na.rm=T),rowsums()

Veg

tapply(Veg$R,Veg$Transect,mean)

## 1 2 3 4 5 6 7

## 7.571429 6.142857 10.375000 9.250000 12.375000 11.500000 10.500000

## 8

## 11.833333

二、循环

先写一个元素的实现代码,再替换通用部分

案例:针对每个鸟巢(27个鸟巢)绘制一个通同胞协商对到达时间的jpeg格式的散点图。

1.载入数据

setwd("C:\\Rstudio\\RBook")

Owl

str(Owl)

## 'data.frame': 599 obs. of 7 variables:

## $ Nest : Factor w/ 27 levels "AutavauxTV","Bochet",..: 1 1 1 1 1 1 1 1 1 1 ...

## $ FoodTreatment : Factor w/ 2 levels "Deprived","Satiated": 1 2 1 1 1 1 1 2 1 2 ...

## $ SexParent : Factor w/ 2 levels "Female","Male": 2 2 2 2 2 2 2 1 2 1 ...

## $ ArrivalTime : num 22.2 22.4 22.5 22.6 22.6 ...

## $ SiblingNegotiation: int 4 0 2 2 2 2 18 4 18 0 ...

## $ BroodSize : int 5 5 5 5 5 5 5 5 5 5 ...

## $ NegPerChick : num 0.8 0 0.4 0.4 0.4 0.4 3.6 0.8 3.6 0 ...

2.提取一个鸟巢数据实现

unique(Owl$Nest)

## [1] AutavauxTV Bochet Champmartin ChEsard

## [5] Chevroux CorcellesFavres Etrabloz Forel

## [9] Franex GDLV Gletterens Henniez

## [13] Jeuss LesPlanches Lucens Lully

## [17] Marnand Moutet Murist Oleyes

## [21] Payerne Rueyes Seiry SEvaz

## [25] StAubin Trey Yvonnand

## 27 Levels: AutavauxTV Bochet Champmartin ChEsard ... Yvonnand

OwlAut

jpeg("C:/Rstudio/RBook/Pic/AutavauxTV.jpg")

plot(x=OwlAut$ArrivalTime,y=OwlAut$NegPerChick,xlab="Arrival Time",ylab="Negotiation behavior",main="AutavauxTV")

dev.off()

## png

## 2

3.设计通用代码

AllNest

for(i in 1:length(AllNest)){

NestName

path

NestData

jpeg(path)

plot(x=NestData$ArrivalTime,y=NestData$NegPerChick,xlab="Arrival Time",ylab="Negotiation behavior",main=NestName)

dev.off()

print(i)

}

三、自定义函数

分为一个数据参数,多个数据参数(位置匹配),以函数为参数(分功能实现代码,再用if合并)等等。

案例1:函数输入数据框,计算每个变量含有缺失值的个数。

NaPerVarible

D1

colSums(D1)

}

案例2:函数确定每个变量中有多少个0

ZeroPerVarible

D1

colSums(D1,na.rm=T)

}

案例3:具有多个参数的函数

VaribleInfo

if(Choice1=="Zeros"){D1

if(Choice1=="Na"){D1

if(Choice1!="Zeros"& Choice1!="Na"){

print("Type 'Zeros' or 'Na'")

}else{colsums(D1, na.rm=T)}

}

r语言html函数,【R语言】《R语言初学者指南》:函数、自定义函数、循环相关推荐

  1. R语言使用caret包的confusionMatrix函数计算混淆矩阵、使用编写的自定义函数可视化混淆矩阵(confusion matrix)

    R语言使用caret包的confusionMatrix函数计算混淆矩阵.使用编写的自定义函数可视化混淆矩阵(confusion matrix) 目录

  2. mysql自定义函数的分号_MySQL 第八篇:自定义函数、存储过程、游标-阿里云开发者社区...

    我把MySQL的内容整理成9篇博客,学完这9篇博客虽不能说能成为大神,但是应付一般中小企业的开发已经足够了,有疑问或建议的欢迎留言讨论. 自定义函数 一.函数的概念与定义 1.理解函数 函数可以看作是 ...

  3. python定义函数prime判断是否是素数_用自定义函数判断素数 用C语言编写自定义函数prime(int x),判断x是否为素数?...

    用C语言编写自定义函数prime(int x),判断x是否为素数? int prime(int x) { int i,k k=(int)sqrt( (double)x ) for(i=2i&l ...

  4. 【C语言】函数基本知识详细讲解(库函数、自定义函数、参数、函数的套用.....

    接着上次的数组的基本知识,让我们来简单了解C语言里的函数. 目录 函数的定义 库函数 自定义函数 函数的参数 函数的调用: 函数的嵌套调用和链式访问 函数的声明和定义 函数递归. 总结  函数的定义 ...

  5. c语言程序设计 第七章函数,《C语言程序设计》第七章随堂练习:自定义函数

    题目:创建一个C语言控制台程序,除了main函数外,自定义两个被调用的函数,并要求至少有一个函数包含有参数. 解答: 首先我们要了解,函数包含哪些组成结构,有四个部分,分别是:函数类型.函数名称.函数 ...

  6. python定义函数的组成部分有_Python基础11- 函数之自定义函数

    自定义函数语法结构: def fun1([x],[y],....): 语句1 语句2 使用def语句来定义函数,在def后依次写出函数名.小括号.参数(可无).冒号,然后缩进写函数体 1.无参函数: ...

  7. oracle十进制函数语法,Oracle 十进制、二进制互相转换自定义函数

    Oracle 十进制.二进制相互转换自定义函数 create or replace function number_2_bit(v_num number) return varchar is v_rt ...

  8. python万年历函数输入某一年某一月_Python自定义函数计算给定日期是该年第几天的方法示例...

    本文实例讲述了python自定义函数计算给定日期是该年第几天的方法.分享给大家供大家参考,具体如下: 写一个函数,计算给定日期是该年的第几天. 满足闰年的条件: 闰年是公历中的名词,能被4整除但不能被 ...

  9. python自定义函数返回值_第八讲 python自定义函数返回值

    注意自定义函数:统一文件内函数名称不能相同. 单返回值 语法结构: def function_name([para1,para2...]): code... code... ... return va ...

  10. matlab调用函数为什么会有多个输出,matlab自定义函数,可以输出多个数组么?

    www.mh456.com防采集. 可以输出多个2113是不是5261因为你在函数中没有4102给输1653出变量赋值?专给一个例子属function[a,b,c]=test1(input)ifinp ...

最新文章

  1. vmware响应时间过长_性能调优高并发下如何缩短响应时间
  2. DataGuard physical standby创建与维护
  3. win10 无法安装/启用 .net framework 3.5 的一种解决方案
  4. 修复虚拟磁盘LVM表
  5. access数据库为什么一直登陆_为什么要养成用Access数据库保存数据的习惯?
  6. maven+springmvc下载excle文件——ie8可用
  7. docker-ce安装
  8. 大学生职业生涯规划计划与路径_我校举办2020年大学生职业生涯规划大赛
  9. Druid连接池链接mysql错误提示:create connection SQLException, url: jdbc:mysql://127.0.0.1:3306/bank, errorCode
  10. AdaBoost(1)
  11. Android混淆规则
  12. Smart原则和PDCA循环
  13. 邓俊辉 数据结构 第二章 向量 笔记
  14. vue引入echarts
  15. Wireshark分析流量包案例
  16. 计算机切换器鼠标反应慢,kvm切换器故障操作解决方法详解
  17. 360视频:CMP和ACP投影
  18. 苹果机型中最具经典的三款机型
  19. 三维点云数据集汇总(分类+检测+识别)
  20. 2022年度回忆录我在 CSDN 的这一年

热门文章

  1. RK3399 Android上面调试IMX291 Camera驱动
  2. ADS软件仿真实例大战(一)
  3. 1.实验:删除CentOS6下/boot/vmlinuz文件修复之
  4. 关于使用 View Binding 不生效的记录
  5. java开发和android开发_浅谈Java开发和Android开发的不同
  6. 运动控制+机器视觉Demo软件框架系统概述
  7. 开源游戏引擎哪家强?八款知名引擎资料够你忙
  8. 地铁上读完《UNIX环境高级编程》是一种怎样的体验
  9. Windows下的TFTP传输文件
  10. android的开机动画,设置安卓开机动画、开机logo