R的基本数据结构

1.向量

1.1产生向量

a <- c(1,2,3) #使用命令c()创建向量

1.2产生序列

b <- seq(from=-2,to =2 ,by =0.5) #使用seq函数生成步长为0.5的等差数列
b<- rep(1,times =5) #使用rep函数生成重复五次的序列

1.3向量的索引

x1 <- c(1,2,na,4,5) #向量的索引可以用于查询、赋值,其本身也是一个向量。向量的索引可以分为数字索引、字符索引和逻辑索引三种,其中默认索引形式为数值索引
x1[3] # 索引查找第三位元素
x1[1:3] # 索引查找第一/第二/第三位元素
x1[-1] # 负索引表示非此位置,例子为查询非1号位置的元素

1.4使用names函数可以方便的按照字符名称对向量进行查询和赋值。

book <- c(50,200,100,20)
names(book) <- c("English","mathematics","physical","computer")
book

English mathematics physical computer
50 200 100 20

2.矩阵

2.1 矩阵的创建

matrix1 <- matrix(c(1,2,3,4,5,6),nrow =2 ,ncol =3)# 定义一个2行3列的矩阵,默认是按列组成矩阵

matrix1
[,1] [,2] [,3]
[1,] 1 3 5
[2,] 2 4 6
matrix1 <- matrix(c(1,2,3,4,5,6),nrow=2,ncol=3,byrow = TRUE)# 按行组成矩阵

2.2 矩阵的运算

t(matrix1) #矩阵的转置
solve(matrix1)# 矩阵求逆

2.3 矩阵的索引

matrix1 <- matrix(1:6,nrow=2)
matrix1
[,1] [,2] [,3]
[1,] 1 3 5
[2,] 2 4 6
matrix1[1,] # 第一行
[1] 1 3 5
matrix1[,1] #第一列
[1] 1 2
matrix1[1:2,c(1,2)] #查询矩阵第一行第二行、第一列第二列元素
[,1] [,2]
[1,] 1 3
[2,] 2 4
matrix_name <- matrix(c(1,2,3,4),nrow=2,dimnames = list(c('row1','row2'),c('col1','col2')))# 通过dimnames参数指定索引名
matrix_name
col1 col2
row1 1 3
row2 2 4
matrix_name[1,'col2']
[1] 3

3 因子factor

因子是R中特有的一种数据结构,经常用在处理字符型变量数据的运算过程中。

age <- c('old','median','young','median','old','young')
age_f <- factor(age) #使用factor函数将序列转换为因子,分类水平排序按字母顺序或数字大小默认排序
age_f
[1] old median young median old young
Levels: median old young
age_f_ordered <- factor(age,levels = c('young','median','old'),ordered = T)#使用ordered参数按照指定因子顺序
age_f_ordered
[1] old median young median old young
Levels: young < median < old
table(age_f)
age_f
median old young
2 2 2
table(age_f_ordered)
age_f_ordered
young median old
2 2 2

4.列表

在一个对象中容纳多种数据类型(数据结构),可以使用列表方式。

v1 <- c(2:8)
v2 <- c('a','b','c')
m1 <- matrix(c(1:9),nrow=3)
f1 <- factor(c('high','low','low','high','high'))
mylist <- list(v1,v2,m1,f1)
mylist

5.数据框

5.1 数据框列表

将数据结构以数据框方式呈现。

list0 <- list(name= c('周鸿祎','刘强东','马云','马化腾'),age = c(41,45,52,51),company=c('360','jd','albb','tenct'))
data.frame(list0)
name age company
1 周鸿祎 41 360
2 刘强东 45 jd
3 马云 52 albb
4 马化腾 51 tenct

5.2 数据框的创建

name <- c('Jane','Alexa','Elant','Yolad')
english <-c (80,82,78,90)
math <- c(88,92,78,90)
art <- c(83,83,90,90)
score<- data.frame(name,english,math,art) #使用data.frame创建数据框score
score
name english math art
1 Jane 80 88 83
2 Alexa 82 92 83
3 Elant 78 78 90
4 Yolad 90 90 90

数据框可以使用使用序列数字索引或c()函数产生的索引,完成数据框切片

score [1:2,c('name','art')]
name art
1 Jane 83
2 Alexa 83

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 这学期开了统计机器学习的课程,鉴于薄弱的概率论与统计学基础,学着还比较吃力,但是R语言的实践,还是令人兴趣十足。接...
    CharlesSun9阅读 4,844评论 1 6
  • 摘要:介绍R语言中常用的数据结构,向量、矩阵、列表、数据库、因子等。主要是它们的创建、索引和简单的运算。 数据类型...
    ChZ_CC阅读 728评论 0 0
  • 基础篇NumPy的主要对象是同种元素的多维数组。这是一个所有的元素都是一种类型、通过一个正整数元组索引的元素表格(...
    oyan99阅读 5,265评论 0 18
  • 我们会根据业务的要求做各种复杂的报表,包括了分组、排序、过滤、转置、差分、填充、移动、合并、分裂、分布、去重、找重...
    fhhhfssfhh阅读 1,610评论 0 6
  • 忆雪国 穿过县界长长的隧道,便是雪国。 在这片白茫茫的雪国岛村来来往往三次,每一次都有不一样的故事发生,这里的故事...
    阿西的藏佳话阅读 485评论 0 4

友情链接更多精彩内容