介于在网上看了很多,有些写的不够清楚,希望我下面能说清楚

1. apply

apply(data,margin,function

apply函数有3个参数:

a. 第一个为输入的数据,要求为矩阵或者数据框的形式

b. 第二个参数指的是按行还是按列来进行计算,为1时是按行进行计算,为2时是按列进行计算

c. 第三个参数指的是使用什么函数

例子

mat

> mat

[,1] [,2]

[1,] 1 3

[2,] 2 4

#按行来求和

> apply(mat,1,sum)

[1] 4 6

#按列来求和

> apply(mat,2,sum)

[1] 3 7

2. lapply

lapply(x,function)

lapply 有2个参数:

a. 第一个参数是需要的数据,可以是向量或者 列表 的形式

b. 第二个参数是函数

注:lapply 返回的是一个列表

例子

> a

> lapply(a, rnorm)

[[1]]

[1] 0.2791608

[[2]]

[1] -0.07617067 1.39466313

[[3]]

[1] 0.16453412 1.57785198 -0.06192266

> lapply(a, function(x) x^2)

[[1]]

[1] 1

[[2]]

[1] 4

[[3]]

[1] 9

3.sapply

sapply(x,function)

sapply与lapply其实是一样的,只是返回的结果是一个向量或者是一个矩阵,当无法将一个结果简化为矩阵时,就会返回一个列表

sapply 有2个参数:

a. 第一个参数是需要的数据,一般向量,也可为列表

b. 第二个参数是函数

注:sapply 返回的是一个向量或矩阵

例子

> sapply(1:10,function(x) x^2)

[1] 1 4 9 16 25 36 49 64 81 100

> sapply(1:10,function(x) c(x,x^2))

[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]

[1,] 1 2 3 4 5 6 7 8 9 10

[2,] 1 4 9 16 25 36 49 64 81 100

#此时返回的结果是跟lapply函数是一样的,这是因为无法将一个结果简化为矩阵

> sapply(a, rnorm)

[[1]]

[1] 0.9481593

[[2]]

[1] 0.9141587 -1.2987320

[[3]]

[1] 0.4243788 -1.1125453 -1.0510732

4. vapply(sapply的安全版本)

可以发现sapply函数很灵活,既可以返回向量,又可以返回矩阵,又可以返回列表,但这种灵活有时候会有风险。vapply函数就是sapply函数的升级版本,vapply函数通过付加一个参数来设定每次返回值的模板。

vapply(x, function, FUN.VALUE)

前面两个参数与sapply完全一样,就多了第三个参数,就是累设定我们返回值的模板的

例子

> a

> sapply(a, function(x) x^2)

[,1] [,2] [,3]

[1,] 1 4 1

[2,] 4 9 9

#numeric(2)的意思是指定了模板numeric(2),意味着每次迭代都返回一个包含2个元素的数值向量

> vapply(a, function(x) x^2,numeric(2))

[,1] [,2] [,3]

[1,] 1 4 1

[2,] 4 9 9

#但是当list变成如下形式时,则会报错,这是因为我们设定了模型,当不能按照模板输出时,函数就会返回错误信息

> b

> sapply(b, function(x) x^2)

[[1]]

[1] 1 4

[[2]]

[1] 4 9

[[3]]

[1] 1 9 9

> vapply(b, function(x) x^2,numeric(2))

Error in vapply(b, function(x) x^2, numeric(2)) :

values must be length 2,

but FUN(X[[3]]) result is length 3

5. mapply (sapply的多元版本)

mapply可以看做是sapply的多元版本,sapply只能在一个向来上迭代,而mapply可以在多个向量上迭代。

mapply(function(x,y) x,y)

例子

> mapply(function(a,b,c) a*b + b*c + a*c,

a = c(1,2,3),

b = c(5,6,7),

c = c(-1,-2,-3)

)

[1] -1 -4 -9

> df

+ y = c(3,4,5))

> mapply(function(xi,yi) c(xi,yi,xi+yi),df$x,df$y)

[,1] [,2] [,3]

[1,] 1 2 3

[2,] 3 4 5

[3,] 4 6 8

6. Map(lapply的多元版本)

Map为lapply的多元版本,故通常返回一个列表的形式

例子

> df

+ y = c(3,4,5))

> Map(function(xi,yi) c(xi,yi,xi+yi),df$x,df$y)

[[1]]

[1] 1 3 4

[[2]]

[1] 2 4 6

[[3]]

[1] 3 5 8

参考资料: 任坤《R语言编程指南》

r语言x c(-1 -2),R语言apply系列介绍相关推荐

  1. R语言笔记3:提取R对象的子集

    R语言基础系列前情提要: 1数据类型(向量.数组.矩阵. 列表和数据框) 2读写数据所需的主要函数.与外部环境交互 Subsetting R Objects 取子集的三种基本方法 [ :"单 ...

  2. R语言编写自定义函数计算R方、使用自助法Bootstrapping估计多元回归模型的R方的置信区间、可视化获得的boot对象、估计单个统计量的置信区间、分别使用分位数法和BCa法

    R语言编写自定义函数计算R方.使用自助法Bootstrapping估计多元回归模型的R方的置信区间.可视化获得的boot对象.估计单个统计量的置信区间.分别使用分位数法和BCa法(Bootstrapp ...

  3. R语言ggplot2可视化:使用R原生plot函数为指定曲线下面的区域着色、ggplot2可视化在曲线的特定下方添加分割线、ggplot2为指定曲线下面的区域着色

    R语言ggplot2可视化:使用R原生plot函数为指定曲线下面的区域着色.ggplot2可视化在曲线的特定下方添加分割线.ggplot2为指定曲线下面的区域着色 目录

  4. R语言使用tryCatch函数调试R代码实战:tryCatch函数运行正常R代码、tryCatch函数运行有错误(error)的R代码示例/tryCatch函数运行有警告(warning)的R代码示例

    R语言使用tryCatch函数调试R代码实战:tryCatch函数运行正常R代码.tryCatch函数运行有错误(error)的R代码示例/tryCatch函数运行有警告(warning)的R代码示例 ...

  5. r语言和python-Python和R语言的区别_Python与R的区别和联系

    Python和R语言的区别_Python与R的区别和联系 可能问这个问题会很无脑,但是我还没有深入接触过Python,只是用过R语言.谁能帮我解答一下,这两者的主要区别呢?是否存在代替关系呢? 精彩解 ...

  6. 包r语言_R语言代码共享:制作R包

    作者:黄天元,复旦大学博士在读,热爱数据科学与开源工具(R),致力于利用数据科学迅速积累行业经验优势和科学知识发现,涉猎内容包括但不限于信息计量.机器学习.数据可视化.应用统计建模.知识图谱等,著有& ...

  7. r语言参数fig=c(),干货︱R语言绘图—基础图形参数整理

    继上一期的文章[干货丨零基础学习 R 语言?]小编在介绍了R语言基础入门(包括R的安装和载入.数据导入和导出方法等),在这一期小编继续为你挖掘R语言的巧妙用处,跟大家探讨如何创建和保存图形,如何修改图 ...

  8. r语言将百分数化为小数_C语言入门学习(一)

    知识点1[写代码的过程] 编辑器:程序员写代码的过程(记事本.vc6.0.vim)(让程序员看懂) 编译器:查看代码的语法错误,生成汇编语言. 汇编器:将生成好汇编语言 生成 二进制语言(目标文件) ...

  9. centos7 r语言安装_R 和 RStudio 的安装及 R Profile 的配置 amp; 初识 R 语言数据爬取...

    ❝ 本文更新至 R version 4.0.0 (2020-04-24) ❞ R 和 RStudio 的安装是非常简单的,这里提供一些安装 Tips.在文章的最后我还通过一个案例带大家走进奇幻的 R ...

最新文章

  1. 古朴西安:乘汽船去机场
  2. 电子科技大学通信原理视频教程 瓦特芯收藏
  3. 互联网1分钟 |1116
  4. C++ 输出当前所在的路径
  5. tp5 sum某个字段相加得到总数
  6. 世界科学技术通史_全球科技通史
  7. 工业以太网交换机的软件故障
  8. linux 查看 CPU 使用率
  9. 嵌入式linux文件系统
  10. 解决:My97DatePicker 日期插件引用在PHP文件中maxDate和minDate控制失效问题
  11. 批量下载 Windows 零散系统更新的得力工具 -Windows Updates Downloader
  12. 【水果识别】基于matlab GUI苹果质量检测及分级系统(带面板)【含Matlab源码 1613期】
  13. 【解决方案】ArcGIS License Manager启动失败
  14. python 中文字符串 编码转换_Python合集之Python字符串编码转换
  15. 04Reverse基础(五)
  16. “没有银弹”的由来!
  17. 九连环课程设计c语言,九连环C语言程序
  18. [渝粤教育] 天津科技大学 化工开发与创新实验 参考 资料
  19. 单模光电转换器怎么接_单纤光纤收发器a与b怎么放?如何使用光纤收发器的AB端?...
  20. python图像隐写_在图像中隐藏数据:用 Python 来完成图像隐写术

热门文章

  1. python listdir() 中文路径 中文文件夹 乱码 解决方法
  2. 层次聚类python代码_python实现层次聚类
  3. 左手 右手--关于魔兽的小说(1-4)转贴
  4. 台式计算机怎样时间同步,台式电脑时间同步不了?一分钟就能快速解决
  5. MYSQL:利用子查询进行过滤
  6. httpd搭建本地yum源
  7. css td 强制换行,CSS——之强制换行
  8. linux卸载rpm包的命令,如何恢复误删除的rpm包命令
  9. 移动端touchmove卡顿
  10. 什么时候用GET?什么时候用POST?