注:本博客旨在分享个人学习心得,有不规范之处请多多包涵!

目录

  • Vector 向量
  • Matrix 矩阵
  • List 列表
  • 结束语

Vector 向量

简单来说,R语言中的vector是一个包含许多元素的一维数据结构,类似Python里的列表。下面的命令可以构造一个简单的R语言向量:

#c()函数意思为connect,它把括号里的内容整合成一个vector或list
myVec1 <- c(1, 2, 3, 4, 5)
myVec2 <- 1:5
myVec3 <- seq(1, 5, 1) #从1开始到5,每次增加量为1
#这里的myVec1、myVec2、myVec3是一样的

R语言允许在一个vector里存多种数据类型,但所有数据会被转化成一种类型,优先级为NULL < raw < logical < integer < double < complex < character < list < expression

R语言中vector的索引与计算如下例所示:

myVec1[1] #R语言的索引从1开始而并非0,所以这个的输出为1
myVec1[c(1,5)] #输出为myVec1的第一个和第五个元素,1 5
myVec[-2] #输出除第2个元素之外的所有元素,1 3 4 5
myVec1[3] <- 7 #myVec1的第三个元素值被改为7,myVec1变为1 2 7 4 5

如果要创建一个vector,用以下指令:

myVec4 <- numeric() #数值型的向量,默认所有值为0
myVec5 <- character() #字符型的向量,默认所有值为空

下例可结合上面所有的内容:

#该例可找到1到100000里所有能被7整除的数
test <- 1:100000 #我们要找的范围,它是一个vector
output <- numeric(length(test)) #创建一个数值型向量,长度为length(test),即test向量的长度
k <- 1 #初始化output向量的索引
for(i in test){ #用i循环遍历所有test向量中的元素if(i %% 7 == 0){ #如果这个元素能整除7output[k] <- i #把这个数字存在output向量的第k位k <- k + 1 #把索引增加1}
}

如果想要对结果进行进一步筛选,参考下例:

#在100到300范围内能被7整除的数
filtered <- output[output > 100 && output < 300]

R语言中vector是可以直接进行运算的。进行运算时,如果是vector和单一值的运算,vector内所有元素都会与这个值进行运算。如1:5+3,结果是每个元素都变大了3。如果是两个vector的运算,两个vector内对应位置的元素会进行运算。如1:5-1:5,结果是5个0。

Matrix 矩阵

简单来说,R语言中的matrix(矩阵)是一个二维的vector(向量)。
关于矩阵的创建和取索引请看下例:

test <- 1:12 #数据
dim(test) <- c(3, 4) #将test向量的维度变为3行4列
test[1, 2] #获取test第1行第2列第元素,输出为4
test[2, ] #获取test第2行所有元素,输出为2 5 8 11
test[, 4] #获取test第4列所有元素,输出为10 11 12
test[10] #获取test中从[1, 1]开始按列读第10个元素,10
test[2, c(3, 4)] #获取test第2行第3和4列元素,输出为8 11

点开Environment里的test矩阵,窗口左上会出现test具体内容:

有另一种创建矩阵的方式:

#data是填入的数据,nrow是行数,ncol是列数,byrow是填写数据是否按行,默认是FALSE(按列填)
newMatrix <- matrix(data = 1:30, nrow = 5, ncol = 6, byrow = TRUE)

R语言中矩阵的运算与向量类似。要注意的是数学中的矩阵乘法要用%*%这个符号,而不是单纯的*

List 列表

R语言的列表和向量在某些方面比较类似。它也是一个一维的数据结构,但不同的数据是不同类型且有自定义的名称。
关于列表的创建和索引访问请见下例:

myList <- list(char = c("a", "b", "c"), num = 1:7, func = sum, logic = TRUE, list = list(one = 1, two = 2, three = 3)) #可以在括号里加任何数据类型,甚至另一个列表
names(myList) #返回myList里所有元素的名称,输出为"char" "num" "func" "logic" "list"
length(myLIst) #返回myList的长度(有几个元素),输出为5myList[1] #myList的第1个元素内容及其名称,输出为c("a", "b", "c")与char
myList[[2]] #myList的第2个元素内容,输出为1:7
myList[[2]][4] #myList的第2个元素内容的第4位,输出为4
myList$logic #myList中名字为logic的元素的内容,输出为TRUE
myList["logic"] #myList中名字为logic的元素内容及其名称,输出为TRUE与logic

myList在Console中的显示如下图:

结束语

Vector, Matrix, List是三种比较常用的数据类型。data.frame类型将在下次着重介绍。有任何问题或想法欢迎评论和私信!

(二)R语言数据结构——Vector, Matrix, List相关推荐

  1. R语言入门第二集 实验一:R 语言数据结构、数据导入与数据处理

    R语言入门第二集 实验一:R 语言数据结构.数据导入与数据处理 一.资源 R语言基本数据结构练习和数据的导入和处理对象常用函数练习--东北大学大数据班R语言实训第一次作业" R(4)求解数据 ...

  2. R语言向量vector数据类型元素索引、访问:使用length函数计算向量的长度、元素个数

    R语言向量vector数据类型元素索引.访问:使用length函数计算向量的长度.元素个数 目录 R语言向量vector数据类型元素索引.访问:使用length函数计算向量的长度.元素个数 R 语言特 ...

  3. R语言数据结构之数组

    R 语言可以创建一维或多维数组.R 语言数组是一个同一类型的集合,矩阵 matrix 其实就是一个二维数组. Usage array(data = NA, dim = length(data), di ...

  4. R语言基础题及答案(二)——R语言与统计分析第二章课后习题(汤银才)

    R语言与统计分析第二章课后习题(汤银才) 题-1 用函数rep( )构造一个向量x, 它由3个3, 4个2, 5个1构成. x<-rep(c(3,2,1),times=c(3,4,5));pri ...

  5. R语言数据结构之列表

    列表是 R 语言的对象集合,可以用来保存不同类型的数据,可以是数字.字符串.向量.另一个列表等,当然还可以包含矩阵和函数. 1. 创建列表 # 列表包含向量.矩阵.列表 list_data <- ...

  6. R语言作图—— Bubble Matrix(气泡矩阵图)

    原创:黄小仙 又是一个好久不见,朋友们你们最近还好吗!最近小仙同学刚经历了人生中的一个重要的里程碑--延毕.在预料之中.又如期而至的两个字,小仙心里也是很复杂,可终究跟"毕业"二字 ...

  7. R语言数据结构之因子

    因子用于存储不同类别的数据类型,例如人的性别有男和女两个类别,年龄来分可以有未成年人和成年人.R 语言创建因子使用 factor() 函数,向量作为输入参数. 1 . 基本语法 factor(x = ...

  8. R语言数据结构之向量

    R总共是6中数据结构:向量.因子.矩阵.数组.数据框.列表.向量用于存储数值型.字符型或逻辑型数据的一维数组,是R中的最小单元.向量构成的基本元素为:数值(numeric).字符(character) ...

  9. R语言数据结构之数据框

    数据框是特殊的二维列表.数据框每一列都有一个唯一的列名,长度都是相等的,同一列的数据类型需要一致,不同列的数据类型可以不一样. data.frame(..., row.names = NULL, ch ...

最新文章

  1. 软件从业人员如何激发敏捷团队?
  2. Android开发之LisitView的图文并排效果实现(源代码分享)
  3. 开发日记-20190401
  4. Codeforces 558E A Simple Task
  5. 论文浅尝 - ACL2020 | 用于关系三元组抽取的级联二进制标记框架
  6. 正则 null_正则表达式exec、match、test的区别
  7. 网页版本的飞行日志分析平台是_一个轻便的实时日志收集平台wslog
  8. 数据千万条,安全第一条
  9. uni一t 说明书_不输特斯拉,站在UNI-T背后的长安「超级工厂」
  10. pv原语模拟实现_并发编程信号量的使用方法和其实现原理
  11. ENVI入门系列教程---一、数据预处理---5. 图像自动配准
  12. java将时间戳转换成字符串_java 时间戳与日期字符串相互转换详解
  13. 禁止国外ip访问网站、服务器
  14. cachecloud安装指南
  15. 单代号网络图计算例题_单代号网络图的绘制与6个时间参数的计算,一篇全掌握...
  16. aip格式转化为pdf_aip文件阅读器
  17. 从词向量到概念发现,知识图谱让机器更加理解人类语言
  18. mysql 5.6 登录 警告_mysql登录警告问题的解决方法
  19. android指南针程序,如何在Android上制作精确的指南针
  20. 服务器电脑增加机械硬盘分区,台式电脑加新、旧机械硬盘分区教程 旧机械硬盘可以装新电脑上吗?...

热门文章

  1. 25岁以后还适合花钱学编程,当程序员吗?
  2. 请介绍一下ivac 2L
  3. 50个BA分析工具第五个-Business Model Cavans
  4. choice数据库导出股票数据
  5. HTML5七夕情人节表白网页制作【纯HTML+CSS实现3D动态相册-蓝色海洋 】HTML+CSS+JavaScript
  6. 浪潮服务器NF5280m5 raid硬盘驱动 配置,raid和系统
  7. HDU4801 转魔方、DFS模拟
  8. python小括号( )、中括号[ ]和大括号也叫做花括号{ } 区别
  9. 嵌入式开发|嵌入式软件框架《一》常用的软件框架介绍与选择
  10. Python下载文件的方式