百日筑基篇 ———— R的数据结构与数据类型(R语言初识一)


前言

作为一个生物专业的学生,对计算机编程语言有较多兴趣,在生信分析中,R语言的学习是必不可少的,作为一个萌新,希望以这种方式,对自己的学习不断进行复盘,同时希望多多指教!!


一、R是什么?

R是一种编程语言和环境,特别适用于统计数据分析、数据可视化和机器学习等领域。
R语言优点:
1.开源代码
2.R软件免费
3.有大量的扩展包
4.绘图精美、高效

二、R的常见数据结构

1.向量(Vectors)

向量是一种基本的数据结构,可存储一系列的值。可以是数值型(numeric)、字符型(character)、逻辑型(logical)或因子型(factor)等

y <- c(1:10)
N <- y[c(TRUE,FALSE)]
y[y>5&y<8]  #交集
y[y>5 | y<8]  #并集
y>5#返回逻辑判断
y[c(T,F)] %>% class()#数值向量
length(N)

z <- c("one","two","three","four")
class(z)  #字符向量
"one"%in% z     #判断字符“one”是否在z中
z%in% c("one","four")#同上,返回逻辑判断

v <- 1:3
v[c(4,5,6)] <- 5:7
append(v,78,after=5)#在向量中插入新元素,after=, 后接索引
ceiling(c(-2.3,3.1412))#不小于x的最小整数
floor(c(-2.3,3.1412)) #不大于x的最大整数
trunc(c(-2.3,3.1412))#返回整数部分
round(c(-2.3,3.1412),digits = 2)#进行四舍五入
signif(c(-2.3,3.1412),digits = 3)#保留小数部分有效数字
which.max(c(1,4,3,6,7,43,6))
which(c(1,4,3,6,7,43,6)==6)#返回索引值

2.矩阵(Matrix)

矩阵是一个二维的数据结构,由行和列组成。矩阵可以存储相同类型的数据,如数值型、字符型等。

x <- 1:20
m <- matrix(x,nrow = 4,ncol=5)
dim(m)
dimnames(m) <- list(c("r1","r2","r3","r4"),c("e1","e2","e3","e4","e5")) #dimnames函数可通过一个列表,指定矩阵行和列的名称
dim(y) <- c(5,2,1) #可通过改变维数来构建矩阵、数组等

q <- c(1:9)
dim(q) <- c(3,3)
w <- c(2:10)
dim(w) <- c(3,3)
q*w #矩阵的内积(对应元素相乘)
q%*%w #矩阵的乘法(行列相乘)

3.数组(Array)

数组是一个多维的数据结构,可以存储多维的数据。数组可以是数值型、字符型等。矩阵就是一个二维数组。

4.数据框(Data Frame)

数据框是一种类似于表格的数据结构,它由行和列组成。其每列可以是不同的数据类型,可以存储不同的数据结构,如向量、因子等,数据框就是一种特殊的列表。

5.列表(List)

列表是一种可以包含不同类型数据对象的数据结构,可以包含向量、矩阵、数据框等其他对象。

a <- c(1:20)
b <- matrix(1:20,4,5)
c <- mtcars
d <- "I'm wang hao tian"
wlist <- list(first=a,second=b,three=c,four=d) #形成一个列表
wlist[1] %>% class()
class(wlist[[1]][5])
wlist$first[4] %>% class()
wlist[[5]] <- c(1:3)
wlist[5]
wlist <- wlist[-5]#删除

6.因子(Factor)

因子是用来表示分类变量的数据结构,它可以将离散的值映射为有序或无序的标签。

mtcars$cyl %>% class()
table(mtcars$cyl)
f <- factor(mtcars$cyl) #转化为因子
week <- factor(c("Mon","Fri","Thu","Wed","Mon","Fri"
                 ,"Sun"),ordered = TRUE,levels=c("Mon","The","Wed","Thu","Fri"
                                                 ,"Sat","Sun"))
x <- 1:100
cut(x,c(seq(0,100,10))) #cut函数可将连续型变量x分割成连续水平的因子

三、R的常见数据类型

数据结构与数据类型有所区别:
数据类型是指数据的类型和属性,而数据结构是指数据的组织和存储方式; 其中既是数据类型又是数据结构的是:向量、列表、矩阵、数组、数据框、因子

1.数值型(numeric)

用于存储数字的数据类型,包括整数和浮点数

as.integer(34.3)	#转化为整数
as.numeric("34.34")	#转化为浮点数

2.字符型(character)

用于存储文本字符串的数据类型

nchar("hello world")
nchar(month.name)	#nchar返回每个元素字符串的个数
length(month.name)
class(month.name)
paste("i","love","you",sep="O^O")
paste(month.name,"QoQ")	#paste函数用于粘贴字符串
substr(month.name,start=1,stop=3)	#提取字符串,返回起始点与结束点之间的字符串
substr(month.name,start=1,stop=3) %>% toupper() %>% tolower()
s <- c("aa","a@","rr")
grep("a@",s,fixed = T)	#grep函数用于查找字符串,返回索引
path <- "&user&local&bin&R"
strsplit(path,"&") %>% class()	#将字符串按指定的分隔符进行拆分

3.逻辑型(logical)

用于存储逻辑值(TRUE或FALSE)的数据类型

4.时间型(POSIXct、POSIXlt)

用于存储日期和时间的数据类型。

Sys.Date() %>% class()	#查看当前日期 
a <- "2023-01-05" 
t <- as.Date(a,format = "%Y-%m-%d") #转化为时间型
class(t)
seq(as.Date("2023-02-04"),as.Date("2023-05-05"),by=5)	#创建连续的时间点
sales <- presidents[35:60]
ts(sales,start=c(2010,6),end=c(2014,4),frequency = 12)#ts函数将向量转化为时间序列数据

总结

今天,整理了R语言中的数据结构和数据类型,理清了其中的关联与区别。大体来说,数据结构提供了一种方式来在程序中组织和操纵数据,而数据类型则定义了数据在内存中的存储和表示方式。即后者为基础元素,前者为存储框架。
昔我往矣,杨柳依依;今我来思,雨雪霏霏

–2023-7-2 筑基篇

更多推荐