向量之间的加减乘除运算:

> x <- 1
> x
[1] 1 2 3 4 5 6 7 8 9 10
> x=x+1
> x
[1] 2 3 4 5 6 7 8 9 10 11
> x = 1:10
> x
[1] 1 2 3 4 5 6 7 8 9 10
> y = seq(1,100, length.out = 10)
> y
[1] 1 12 23 34 45 56 67 78 89 100
> x*y
[1] 1 24 69 136 225 336 469 624 801 1000
> x**y
[1] 1.000000e+00 4.096000e+03 9.414318e+10 2.951479e+20
[5] 2.842171e+31 3.771117e+43 4.183778e+56 2.760699e+70
[9] 8.464150e+84 1.000000e+100

这些代码看起来完全没有任何问题,就像之前我们已经接触过的其他语言的编程一样,但是后面就有一些R语言自带的特性了,比如说有两个不同长度的向量在进行加减乘除的时候,运算的规律是小的向量不断循环地去乘上大的向量,并且大的向量的长度必须是短的向量的整数倍,不然程序就会报错。我们举个例子,假定有一个长度为2的向量Z(1,2),如下所示:

z=c(1,2)
> z
[1] 1 2

我们用这个创建好的向量去和刚才创建的X向量进行相乘,得到的结果如下所示:

> z+x
[1] 2 4 4 6 6 8 8 10 10 12
> z*x
[1] 1 4 3 8 5 12 7 16 9 20

很显然R语言当中已经帮我们做了乘法,用Z向量当中的每一个component去乘或者加上X向量当中的每一个component并不断循环。如果这个时候x向量不是z向量的整数倍,那么计算机就不知道在哪里停止计算,就会报错,出现以下的情况,这是万万使不得的:

> z=c(1,2,3)
> z
[1] 1 2 3
> z*x
[1] 1 4 9 4 10 18 7 16 27 10
Warning message:
In z * x : longer object length is not a multiple of shorter object length

我们在R语言当中也可以很方便的使用%in%对一个向量当中的哪些元素在另外一个向量当中,如下所示:

> c(1,2,3) %in% c(1,2,3,4)
[1] TRUE TRUE TRUE
> c(1,2,3) %in% c(1,5,6,7,8)
[1] TRUE FALSE FALSE

判断之后的结果则会用TRUE,FALSE显示出来。

在R当中也可以使用==来表示判断真假,比如说我们可以判断x和y是否是两个相同的向量,在判断的时候我们取x和y的向量长度都一样,数值不一样的特殊情况,判断的结果如下所示:

> x==y
[1] TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
> x
[1] 1 2 3 4 5 6 7 8 9 10
> y
[1] 1 12 23 34 45 56 67 78 89 100

我们还可以使用log()函数来进行计算对数,里面的参数base表示底数,不带参数base则表示底数是自然对数e,如下所示:

> log(16,base=2)
[1] 4
> log(16)
[1] 2.772589
> log(16)#默认是自然对数进行计算
[1] 2.772589

下面我们再创造一个向量对其进行运算,这里使用了max(),min(),以及sum()求和函数,字面意思也是很容易弄明白的,如下所示:

> vec=1:100
> vec
[1] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
[25] 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
[49] 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72
[73] 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96
[97] 97 98 99 100
> sum(vec)
[1] 5050
> max(vec)
[1] 100
> min(vec)
[1] 1

R语言当中还可以使用round()函数来表示保留几位小数,在下面我们就会遇到,如下所示:

> var(vec)#方差
[1] 841.6667
> round(var(vec),digits = 6)
[1] 841.6667
> round(var(vec),digits = 2)
[1] 841.67
> prod(vec)#计算连乘的积
[1] 9.332622e+157
> median(vec)#计算中位数
[1] 50.5
> quantile(vec)#计算分位数
0% 25% 50% 75% 100%
1.00 25.75 50.50 75.25 100.00
> quantile(vec,c(0.2,0.4,0.9))
20% 40% 90%
20.8 40.6 90.1
> t=c(1,2,3,4,5,8,3,6)
> which.max(t)
[1] 6
> which.min(t)
[1] 1

得解!今天的向量运算教程就到这里了!

R语言入门:向量的运算的更多相关文章

  1. R语言入门:向量初探

    R语言主要用于统计,因此引入了向量这个概念将更好地进行统计计算,在其他无法引入向量的语言当中则会使用循环来计算一些大规模的数据,在R语言当中则不需要,下面我们来看看R语言当中向量的具体用法吧! 首先, ...

  2. 【Introduction】R语言入门关键小结

    写在前面:本博客为本人原创,严禁任何形式的转载!本博客只允许放在博客园(.cnblogs.com),如果您在其他网站看到这篇博文,请通过下面这个唯一的合法链接转到原文! 本博客全网唯一合法URL:ht ...

  3. R语言入门(2)-数据对象

    数据对象 创建向量相关的方法 R语言的向量用法非常像python, 就比如这个seq(0,10,2), 从0到10, 步长为2, 涉及到的元素作为向量里的内容进行创建. 这里的用法非常像Matlab, ...

  4. 用几分钟了解R语言入门知识

    第一篇——用几分钟了解R语言入门知识 第二篇——用几分钟了解R语言入门知识(续) 关于数据分析学习笔记的计划(以及目录)

  5. R语言入门1:安装R和RStudio

    R语言入门1:安装R和RStudio 曹务强 中科院遗传学博士研究生 9 人赞同了该文章 1. Windows安装R 在Windows系统上,安装R语言比较简单,直接从R的官方网站下载,按照正常的软件 ...

  6. R语言入门:向量索引

    这节的内容是建立在之前我们对R语言最基本向量赋值的基础之上的,笔者本人学完R当中向量的索引感觉异常舒适,因为这个比Python的索引爽多了,是什么值开始索引就从哪里开始索引,到哪里结束就在哪里结束,而 ...

  7. R语言入门(二)基础语法

    1.help可以提供帮助,如help(nchar), help("[["),或者用?nchar也能获取帮助.example(nchar)可以获取到某个主题的使用方法. 2.ncha ...

  8. 《R语言入门与实践》第一章:R基础

    前言 本章介绍了 R 语言的基础知识 界面: 使用命令 “ R “进行命令行的实时编译 对象 定义: 用于储存数据的,设定一个名称 格式: a <- 1:6 命名规则: 规则1:不能以数字开头规 ...

  9. R语言学习——向量,矩阵

    在R中,基本的数据结构有:向量,矩阵,数组,数据框,列表,因子,函数等. 向量:一系列同类型的有序元素构成. 向量是一维结构. 向量是R最简单的数据结构,在R中没有标量. 标量被看成1个元素的向量. ...

随机推荐

  1. python接口测试,mock模块基本使用介绍

    mock简介 py3已将mock集成到unittest库中 为的就是更好的进行单元测试 简单理解,模拟接口返回参数 通俗易懂,直接修改接口返回参数的值 mock作用 解决依赖问题,达到解耦作用 当我们 ...

  2. spring整合Mybati时,只报空指针异常问题

    异常如下: 在整合spring和Mybatis,刚开始进行查询映射时没有问题,在进行插入映射时一直报空指针异常,后来把插入部分的Mapper映射文件和Dao层接口方法删除到原来还是不行,后来网上查了查 ...

  3. IO系统-基本知识

    注:本文档主要整理了Linux下IO系统的基本知识,是整理的网易云课堂的学习笔记,老师讲得很不错,链接如下:Linux IO系统 1.Linux操作系统的基本构成 内核:操作系统的核心,负责管理系统的 ...

  4. java.sql.Date与java.sql.Date区别

    public static void main(String[] args) { java.sql.Date createTime = new java.sql.Date(System.current ...

  5. Java中的Swap,如何实现?

    程序员都知道,在C/C++里面交换值的方法: void swap(int &a,int &b) { int temp; temp=a; a=b; b=temp; } 但是在Java中这 ...

  6. THU的告诫

    究其原因,还是自己只会OI了.要成为一个合格的选手,是方方面面各个地方都要看的,同时也要自己去实现.快速实现.清晰实现.运行成功. 尤其是各种平时用的东西,不要只会技,还要研其道. 再次警醒,各位同我 ...

  7. CTF--HTTP服务--SQL注入-X-Forwarded-For报文头

    开门见山 1. 扫描靶场ip,发现PCS 192.168.31.196 2. 扫描靶场开放服务信息 3. 扫描靶场全部信息 4. 探测敏感信息 5. 查看靶场80端口的主界面 6. 使用AVWS工具进 ...

  8. spring源码系列(二):IOC接口设计分析

    这里主要对springIOC接口体系进行简单的概述和分析,具体每个接口详细分析在下面目录: 参考内容: <Spring技术内幕:深入解析 Spring架构与设计原理> 和 <Spri ...

  9. Redis 面试题汇总

    Redis 面试题汇总 1.Redis 使用场景有哪些? 答:Redis 使用场景如下: 记录帖子点赞数.点击数.评论数 缓存近期热帖 缓存文章详情信息 记录用户会话信息 2.Redis 有哪些功能? ...

  10. 八、django学习之分组查询、F查询和Q查询

    分组查询.F查询和Q查询 分组查询 统计每个出版社出版的书籍的平均价格 第一种方式 obj = models.Book.objects.values('publishs_id').annotate(a ...