矩阵:存放相同类型元素的二维向量

参数解释

  matrix(data=NA, nrow = 1, ncol = 1, byrow = FALSE, dimnames = NULL)

参数含义如下:

  • data: 矩阵的元素的向量,默认为NA
  • nrow:矩阵的行数,默认为1
  • ncol: 矩阵的列数,默认为1
  • byrow:元素是否按行填充,默认按列
    •   byrow = FALSE:按列填充
    •   byrow = TRUE:按行填充
  • dimnames:以字符型向量表示的行名及列名

创建形式

m1 <- matrix(
c(1:6),
nrow=2,
ncol=3,
dimnames=list(
c("r1","r2"),
c("c1","c2","c3")
)
)
"""
c1 c2 c3
r1 1 3 5
r2 2 4 6
""" # 共6个元素,分2行,每行3个元素,未指定行名和列名
m2 <- matrix(1:6,nrow=2) <--> m3 <- matrix(1:6,ncol=3)
"""
[,1] [,2] [,3]
[1,] 1 3 5
[2,] 2 4 6
""" #未指定元素数据,默认为NA,2行3列,nr是nrow的简写,nc是ncol的简写
m4 <- matrix(nr=2,nc=3)
"""
[,1] [,2] [,3]
[1,] NA NA NA
[2,] NA NA NA
""" # 创建名为v1的向量
v1 <- c(1:4)
# 创建名为v2的向量
v2 <- c(5:8)
# 将向量v1和v2按行合并为一个矩阵
m5 <- rbind(v1,v2)
"""
[,1] [,2] [,3] [,4]
v1 1 2 3 4
v2 5 6 7 8
"""
# 将向量v1和v2按列合并为一个矩阵
m6 <- cbind(v1,v2)
"""
v1 v2
[1,] 1 5
[2,] 2 6
[3,] 3 7
[4,] 4 8
"""
# 将上面定义的矩阵m1和m2合并为一个新的矩阵
m7 <- rbind(m1,m2)
"""
c1 c2 c3
r1 1 3 5
r2 2 4 6
1 3 5
2 4 6
"""

获取指定的值

使用位置索引来访问元素

  • 矩阵名[行位置,列位置]  -->  获取某个元素的值
  • 矩阵名[行位置, ]  -->  获取某一行的所有元素
  • 矩阵名[, 列位置]  -->  获取某一列的所有元素

使用向量访问若干行或若干列

m1
"""
c1 c2 c3
r1 1 3 5
r2 2 4 6
"""
  • 矩阵名[向量1,向量2]  -->  获取向量1表示的行集和向量2表示的列集交叉处的数据
m1[c(1,2),c(1,3)]
"""
c1 c3
r1 1 5
r2 2 6
"""
  • 矩阵名[向量1, ]  -->  获取向量1表示的行集的数据
m1[c(1,2), ]
"""
c1 c2 c3
r1 1 3 5
r2 2 4 6
"""
  • 矩阵名[, 向量2]  -->  获取向量2表示的列集的数据
m1[ , c(1,3)]
"""
c1 c3
r1 1 5
r2 2 6
"""

使用行名或列名来访问矩阵中的元素

# m1矩阵行名分别为r1和r2, 列名分别为c1,c2,c3
m1 <- matrix(
c(1:6),
nrow=2,
ncol=3,
dimnames=list(
c("r1","r2"),
c("c1","c2","c3")
)
)
"""
c1 c2 c3
r1 1 3 5
r2 2 4 6
"""
  • 矩阵名[ "行名","列名"]  -->  通过行名和列名获取某一个元素
m1["r1", "c2"]  #
  • 矩阵名["行名", ]  -->  通过行名来获取矩阵某一行的所有元素
m1["r2", ]
"""
c1 c2 c3
2 4 6
"""
  • 矩阵名[ , "列名"]  -->  通过列名来获取矩阵某一列的所有元素
m1[ , "c1"]
"""
r1 r2
1 2
"""

排除指定的元素(行或列)

  • 矩阵名[ -r, -c]  -->  排除第r行和第c列数据,返回剩下数据
# 除去第1行及第2列的数据
m1[-1, -2]
"""
c1 c3
2 6
"""
  • 矩阵名[-r , ]  -->  除去第r行之外的数据
# 除去第2行之外的数据
m1[-2,]
"""
c1 c2 c3
1 3 5
"""
  • 矩阵名[ , -c]  -->  除去第c列之外的数据
# 除去第2列之外的数据
m1[, -2]
  • 矩阵名[-向量1, -向量2]  -->  获取除指定行集和列集之外的元素
m1[-c(1),-c(2,3)]  #
  • 矩阵名[-向量1, ]  -->  获取除指定行集之外的元素
m1[-c(2), ]
  • 矩阵名[ , -向量2]  -->  获取除指定列集之外的元素
m1[ , -c(1:2)]

R的数据结构--矩阵的更多相关文章

  1. 【R】数据结构

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

  2. Matlab、R向量与矩阵操作 z

    已有 1849 次阅读 2012-8-2 15:15 |系统分类:科研笔记|关键词:矩阵 480 window border center Matlab.R向量与矩阵操作   描    述 Matla ...

  3. Matlab、R向量与矩阵操作

    Matlab.R向量与矩阵操作   描    述 Matlab R 1 建立行向量v=[1 2  3 4] v=[1 2 3 4] v<-c(1,2,3,4)或v<-scan(),然后输入 ...

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

  7. R的数据结构

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

  8. Advanced R之数据结构

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

  9. 使用R语言-为矩阵(表格)的行列命名

    转自:http://www.dataguru.cn/article-2217-1.html R语言中经常进行矩阵(表格)数据的处理,在纷繁复杂的数据中,为其行列定义一个名字变得尤为重要.在处理巨量数据 ...

随机推荐

  1. 【VS开发】MP4与H.264

    一.MP4格式基本概念 MP4格式对应标准MPEG-4标准(ISO/IEC14496) 二.MP4封装格式核心概念 1  MP4封装格式对应标准为 ISO/IEC 14496-12(信息技术 视听对象 ...

  2. VS编译错误._CRT_SECURE_NO_WARNINGS、_WINSOCK_DEPRECATED_NO_WARNINGS

    1.不记得原来的情况了,记得大概是这样: 低版本的 VC编译器 使用 strcpy.sprintf 等它不会报错,但是 高版本的 VS编译就会报错,大意是 strcpy.sprintf 等函数 不安全 ...

  3. Java总复习内容

    StringBuffer定义时需要用正确的方式 例如: StringBuffer xxx = new StringBuffer("雯雯是猪"); 使用StringBuffer的连接 ...

  4. Python基础总结之初步认识---class类(中)。第十四天开始(新手可相互督促)

    昨天简单的认识类怎么定义,什么是类,类如何调用.今天的笔记会大概补充一些内容,明天的笔记会细致讲解,加深个印象即可 今天我们在了解下:类的属性,类属性属于类也属于实例化对象.也就是说类的实例化对象可以 ...

  5. 【leetcode算法-简单】13. 罗马数字转整数

    [题目描述] 罗马数字包含以下七种字符: I, V, X, L,C,D 和 M. 字符 数值I 1V 5X 10L 50C 100D 500M 1000例如, 罗马数字 2 写做 II ,即为两个并列 ...

  6. 《C专家编程》读书笔记之第1~4章

    一.C:穿越时空的迷雾 1. C标准中定义了描述编译器的特点的一些术语: (1) 由编译器定义的(imprementation-defined) 由编译器设计者决定如何处理.例如:整型数右移时要不要扩 ...

  7. [转帖]Windows安全认证是如何进行的?[Kerberos篇]

    Windows安全认证是如何进行的?[Kerberos篇] NTLM 的简单看了一下 基本上了解了.. 这个KERBEROS 的看不太懂 感觉说的我也有点迷糊.. 虽然是对称加密的 但是不清不楚的.. ...

  8. Spring Boot CommandLineRunner的使用

    1. 说明 程序在启动完成的时候需要去处理某些业务,因此Spring Boot程序中需要去实现CommandLineRunner接口. 2. CommandLineRunner方法执行顺序 程序启动后 ...

  9. Java模版引擎之Freemarker

    Java模版引擎之Freemarker freemarker是一款模版引擎,是一种基于模版生成静态文件的通用工具,它是为Java程序员提供的一个类库,它不是面向最终用户的,而是为程序员提供了一款可以嵌 ...

  10. 【51nod】2589 快速讨伐

    51nod 2589 快速讨伐 又是一道倒着推改变世界的题... 从后往前考虑,设\(dp[i][j]\)表示还有\(i\)个1和\(j\)个\(2\)没有填,那么填一个1的话直接转移过来 \(dp[ ...