向量:用于存储数值型、字符型或逻辑型数据的一维数组,只可以包含一种数据

向量的创建与运算

创建向量

  1. # 创建简单向量
  2. l <- c(2, 2, 1, 3, 8)
  3. # [1] 2 2 1 3 8
  4.  
  5. # 创建一个1至5的向量
  6. # : --> 至
  7. # 1:5 --> 从1到5的5个整数
  8. n <- 1:5
  9. # [1] 1 2 3 4 5
  10.  
  11. # 创建向量,初始默认为逻辑值FALSE
  12. v <- vector(length = 4)
  13. # [1] FALSE FALSE FALSE FALSE

基本运算

  1. # 切片运算
  2. # 注意R中的序号1就表示第1个,而不是2个,要与python相区别
  3. n[1:4]
  4. # [1] 1 2 3 4
  5.  
  6. # 基本运算
  7. # 等长
  8. a1 <- l + n
  9. # [1] 3 4 4 7 13
  10. a2 <- l / n
  11. # [1] 2.0000000 1.0000000 0.3333333 0.7500000 1.6000000
  12.  
  13. # 不等长
  14. # 较少元素的向量在运算完一遍以后将会重新对应较多元素的向量中的剩余元素逐个再从头运算一次
  15. n <- 1:5
  16. l <- c(1,1,1,1,1,2,2,2,2,2)
  17. a <- n * l
  18. # [1] 1 2 3 4 5 2 4 6 8 10

两个方便创建向量的函数

seq函数 - 建立等差数列

  1. # 建立从2到10,间隔为2的等差数列
  2. n <- seq(from=2, to=10, by=2 # 或 n <- seq(2, 10, 2)
  3. # [1] 2 4 6 8 10

rep函数 - 元素的重复

  • rep(起始值:终止值, times = 重复次数)  -->  将整一个向量重复n次
  • rep(起始值:终止值, each = 重复次数)  -->  将向量的每个元素依次重复n次

  若直接写数字,则是第一种times

  1. # 把1到4赋值给x
  2. x=1:4
  3. # 把向量x重复2次
  4. rep(x,2)
  5. # 等价于 rep(1:4,2)
  6. # [1] 1 2 3 4 1 2 3 4
  7.  
  8. # 把“male”和“female”和2各重复5次
  9. # each=5
  10. rep(c("male","female",2),each=5)
  11. # 等价于 rep(c("male","female",2),c(5,5,5))
  12. # 次数步长可自定义
  13. """
  14. [1] "male" "male" "male" "male" "male" "female" "female" "female"
  15. [9] "female" "female" "2" "2" "2" "2" "2"
  16. """
  17.  
  18. # times=5
  19. rep(c("male","female",2),5)
  20. """
  21. [1] "male" "female" "2" "male" "female" "2" "male" "female"
  22. [9] "2" "male" "female" "2" "male" "female" "2"
  23. """
  24.  
  25. # 也可设置最大长度
  26. # length.out也可以简写为length或len
  27. rep(c("male","female",2),5,length.out=12)
  28. """
  29. [1] "male" "female" "2" "male" "female" "2" "male" "female"
  30. [9] "2" "male" "female" "2"
  31. """
  32.  
  33. # each和times可同时使用
  34. rep(c(3,5,7),each=3,times=2)
  35. # [1] 3 3 3 5 5 5 7 7 7 3 3 3 5 5 5 7 7 7

删除向量

  1. # rm(向量名)
  2. rm(x)

访问向量中的元素

访问指定位置上的元素

  • 向量名[位置常量]
  • 向量名[位置常量1:位置常量2]
  • 向量名[c(位置常量列表)]
  1. # 创建10个元素向量
  2. v <- vector(length = 10)
  3. # [1] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
  4.  
  5. # 访问第1个元素,赋值为1
  6. v[1] <- 1
  7. # [1] 1 0 0 0 0 0 0 0 0 0
  8.  
  9. # 访问第2~4个元素,赋值为2,3,4
  10. v[2:4] <- c(2,3,4)
  11. # [1] 1 2 3 4 0 0 0 0 0 0
  12.  
  13. # 生成一个取值为5~9的序列给向量w
  14. w <- seq(5,9,1)
  15. # [1] 5 6 7 8 9
  16.  
  17. # 访问第5~9和第10个元素,赋值为5~10
  18. # c(w, 10)的访问方式,可以有效实现多个向量的合并
  19. v[c(5:9,10)] <- c(w,10)
  20. # [1] 1 2 3 4 5 6 7 8 9 10

利用位置向量访问指定位置上的元素

  1. v
  2. # [1] 1 2 3 4 5 6 7 8 9 10
  3.  
  4. # 直接指定位置
  5. w <- (2:4)
  6. # [1] 2 3 4
  7. v[w]
  8. # [1] 2 3 4
  9.  
  10. # 利用逻辑型位置向量来访问
  11. w <- c(T,F,F,T,F,F,F,F,F,F)
  12. # 访问v中位置向量w取值为TRUE位置上的元素
  13. v[w]
  14. # [1] 1 4

访问指定位置之外的元素

  1. # 访问除了第1个元素以外的元素
  2. v[-1]
  3. # [1] 2 3 4 5 6 7 8 9 10
  4.  
  5. # # 访问除了2~4元素以外的元素
  6. v[-(2:4)]
  7. # [1] 1 5 6 7 8 9 10
  8.  
  9. v[-c(5:9,10)]
  10. # [1] 1 2 3 4
  11.  
  12. w
  13. # [1] TRUE FALSE FALSE TRUE FALSE FALSE FALSE FALSE FALSE FALSE
  14. v[-w]
  15. # [1] 2 3 4 5 6 7 8 9 10

R的数据结构--向量的更多相关文章

  1. 第二章 R语言数据结构

    R语言存储数据的结构包括:标量.向量.矩阵.数组.数据框和列表:可以处理的数据类型包括:数值型.字符型.逻辑型.复数型和原生型. 数据结构 向量 向量是用来存储数值型.字符型或逻辑型数据的一维数组.单 ...

  2. R的数据结构

    R语言中的数据结构包括标量.向量.矩阵.数组.列表以及数据框 目录 1 向量 2 矩阵 3 数据框 1 向量 向量是用于存储单一数据类型(数值.字符.逻辑值)的一维数组,示例如下: a <- c ...

  3. 【R】数据结构

    之前一阵子,在EDX上学习了R语言的一门基础课程,这里做个总结.这门课程主要侧重于R的数据结构的介绍,当然也介绍了它的基本的绘图手段. 工作空间相关 ls() ## character(0) rm(a ...

  4. R语言-数据结构

    1.向量 向量是用来存储数值型.字符型或逻辑性数据的一维数组,用函数c()创建向量 a <- c(1,2,5,6,4) b <- c("one","two&q ...

  5. R语言数据结构

    5. 数据结构 5.1 数据结构简介 (1)向量 一个向量的所有元素必须有相同的类型(模式) (2)列表 列表可以非同质的 列表可按位置索引:lst[[2]] 抽取子列表:lst[c(2,5)] 列表 ...

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

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

  7. Advanced R之数据结构

    看了几本R语言语法相关的书籍,感觉都不怎么好,在实际使用过程中仍然遇到很多难以理解的问题,后来看了Hadley Wickham的Advanced R,好多问题迎刃而解,今天重温了该书的第一章即数据结构 ...

  8. 2-2 R语言基础 向量

    #Vector 向量的三种创建方法,两个参数:类型,长度 > x <- vector("character",length=10)> x1 <- 1:4&g ...

  9. (2)特征点匹配,并求旋转矩阵R和位移向量t

    include头文件中有slamBase.h # pragma once // 各种头文件 // C++标准库 #include <fstream> #include <vector ...

随机推荐

  1. 【Qt开发】Qt5 中对 C++11 一些新特性的封装

    C++11 是现在的 C++ 标准的名称,C++11 为 C++ 语言带来很多新特性. 而 Qt 4.8 是 Qt 首个在其 API 中开始使用一些新的 C++11 特性的版本,我之前写过一篇博文:C ...

  2. openat与open的区别及用法示例

    从2.6.16版本开始,GNU/Linux引入opeant系统调用: #define _XOPEN_SOURCE 700 /* Or define _POSIX_C_SOURCE >= 2008 ...

  3. Java基础语法知识你真的都会吗?

    第一阶段 JAVA基础知识 第二章 Java基础语法知识 在我们开始讲解程序之前,命名规范是我们不得不提的一个话题,虽说命名本应该是自由的,但是仍然有一定的"潜规则",通过你对命名 ...

  4. 自动输入密码执行远程服务器上的java -version命令

    自动输入密码执行远程服务器上的java -version命令 for i in $(seq 1 253);do sshpass -p "W123hz" ssh weili@192. ...

  5. python在windows和linux下的安装和配置

    一.windows下安装python3.6 安装编辑器:Ecplise+pydev插件 Eclipse是写JAVA的IDE, 这样就可以通用了,学习代价小.  学会了Eclipse, 以后写Pytho ...

  6. 大话数据结构(8) 串的模式匹配算法(朴素、KMP、改进算法)

    --喜欢记得关注我哟[shoshana]-- 目录 1.朴素的模式匹配算法2.KMP模式匹配算法 2.1 KMP模式匹配算法的主体思路 2.2 next[]的定义与求解 2.3 KMP完整代码 2.4 ...

  7. spring mvc 的配置 及interceptor filter listener servlet 配置

    创建 三个类 分别实现 Filter  ServletContextListener  HttpServlet 在springboot 启动类中@bean加入 2 ,实现 ServletContext ...

  8. [游戏复刻] Super Mario Brothers(1985. Famicom)

    10/20 第一版,导入了地图,设置了碰撞块

  9. ios 输入框失去焦点,位置回调方法

    微信网页开发,ios 在input,textarea 失去焦点后,页面无法回调. 以下方法可解决: $("input,textarea").on("blur", ...

  10. Java手写简单HashMap一(包括增加,查找,toString,泛型)

    @Java 300 学习总结 HashMap底层采用实现采用了哈希表,结合了"数组和链表". 原理如图 一.定义HashMap类. 首先需要定义一个节点来存储数据,构成链表结构. ...