R语言学习笔记(一)数据结构

简介: 使用软件:RStudio, RGUIR的数据类型: - 数值型Numeric,如100,0,-4.335 - 字符型Character,如“China” - 逻辑性Logical,如TRUE,FALSE - 复数...

使用软件:RStudio, RGUI

R的数据类型:
- 数值型Numeric,如100,0,-4.335
- 字符型Character,如“China”
- 逻辑性Logical,如TRUE,FALSE
- 复数型,如2+3i
- 因子型,表示不同类别
- 特殊类型:NA(缺失值),NULL(空),NaN(非数值),Inf和-Inf(正无穷和负无穷)

样例代码:

age <- c(1,3,5,2,11,9,3,9,12,3)
weights <- c(4.4,5.3,7.2,5.2,8.5,7.3,6.0,10.4,10.2,6.1)
print(mean(weights))
print(sd(weights))
print(cor(age, weights))
plot(age, weights)

R不提供多行注释或块注释功能,但可以用if(FALSE){. .. }实现代码的注释

帮助函数

if(FALSE){打开帮助文档首页}
help.start()
if(FALSE){查看函数mean的帮助}
help("mean")
?mean
if(FALSE){以mean为关键字搜索帮助文档}
help.search("mean")
??mean
if(FALSE){函数mean的使用示例}
example("mean")
if(FALSE){列出当前已加载包中所含的所有可用示例数据集}
data()

这里写图片描述

目录操作

if(FALSE){查看当前目录}
getwd()
if(FALSE){修改当前的工作目录为mydirectory}
setwd("mydirectory")
if(FALSE){列出当前工作空间中的对象}
ls()
if(FALSE){移除(删除)一个或多个对象}
rm("x")
if(FALSE){退出R}
q()

这里写图片描述
包的操作

if(FALSE){安装包}
install.packages("gclus")
if(FALSE){载入包}
library(gclus)
if(FALSE){包的简短描述}
help(package="gclus")

R的数据结构:标量、向量(Vector)、矩阵(Matrix)、数组(Array)、数据框(Data Frame)和列表(List)。
按维度与内容的同质性可分为:

维度 均一(所有内容为同一类型) 非均一
一维 Vector 向量 List 列表
二维 Matrix 矩阵 Data Frame 数据框
三维 Array 数组

标量、向量

if(FALSE){标量的创建}
a <- 3
if(FALSE){向量的创建1}
a <- c(1,2,3,4,5)
a <- c("China", "USA", "Japan")
a <- c(FALSE, TRUE, FALSE, TRUE)
if(FALSE){向量的创建2,使用:,a=[1]  1  2  3  4  5  6  7  8  9 10}
a <- 1:10
if(FALSE){向量的创建3,使用seq()函数生成序列,a=[1] 1 3 5 7 9}
a <- seq(1,9,2)
if(FALSE){向量的创建4,使用rep()函数,生成重复序列,a=[1] 2 2 2}
a <- rep(2,3)
if(FALSE){向量的访问,下标从1开始}
a <- c(1,2,3,4,5,6,7)
a[3]
a[c(1,3,5)]
a[2:6]
a[which(a>2)]

这里写图片描述
矩阵

if(FALSE){矩阵的使用,其中vector包含了矩阵的元素,nrowncol用以指定行和列的维数,dimnames包含了可选的、以字符型向量表示的行名和列名。选项byrow则表明矩阵应当按行填充(byrow=TRUE)还是按
列填充(byrow=FALSE),默认情况下按列填充。}
mymatrix <- matrix(vector, nrow=num_of_rows, ncol=num_of_cols, byrow=logical_value, dimnames=list(char_vector_rownames,char_vector_colnames))
if(FALSE){矩阵的创建1}
y <- matrix(1:20, nrow=5, ncol=4)
if(FALSE){矩阵的创建2}
cells <- c(1,26,24,68)
rnames <- c("R1","R2")
cnames <- c("C1","C2")
mymatrix <- matrix(cells, nrow=2, ncol=2, byrow=TRUE, dimnames = list(rnames, cnames))
if(FALSE){矩阵的创建3,按列排列}
x <- c(1:12)
dim(x) = c(3,4)
if(FALSE){矩阵的访问}
x <- matrix(1:20, nrow=4)
print(x[2,])
print(x[,2])
print(x[2,2])
print(x[3,c(4,5)])

这里写图片描述
数组

if(FALSE){数组的使用,vector包含了数组中的数据,dimensions是一个数值型向量,给出了各个维度下标的最大值,而dimnames是可选的、各维度名称标签的列表}
myarray <- array(vector, dimensions, dimnames)
if(FALSE){数组的创建}
dim1 <- c("A1","A2")
dim2 <- c("B1","B2","B3")
dim3 <- c("C1","C2","C3","C4")
z <- array(1:24, c(2,3,4), dimnames=list(dim1,dim2,dim3))
if(FALSE){数组的访问}
z[,,3]
z[,2,3]
z[1,2,3]

数据框

if(FALSE){数据框的使用,列向量col1, col2, col3,… 可为任何类型(如字符型、数值型或逻辑型)。每一列的名称可由函数names指定,每一列的数据类型必须相同。}
if(FALSE){DataFrameR语言中最常用的数据结构}
mydata <- data.frame(col1, col2, col3)
if(FALSE){数据框的创建}
patientID <- c(1,2,3,4)
age <- c(25,34,28,52)
diabetes <- c("Type1","Type2","Type1","Type1")
status <- c("Poor","Improved","Excellent","Poor")
patientdata <- data.frame(patientID, age, diabetes, status)
if(FALSE){数据框的访问}
patientdata[1:2]
patientdata[c("age","status")]
patientdata$age
if(FALSE){因子的使用}
patientID <- c(1,2,3,4)
age <- c(25,34,28,52)
diabetes <- c("Type1","Type2","Type1","Type1")
diabetes <- factor(diabetes)
status <- c("Poor","Improved","Excellent","Poor")
status <- factor(status, order=TRUE)
patientdata <- data.frame(patientID, age, diabetes, status)
summary(patientdata)

这里写图片描述
列表

if(FALSE){列表的使用,列表(list)是R的数据类型中最为复杂的一种。一般来说,列表就是一些对象(或成分,component)的有序集合。列表允许你整合若干(可能无关的)对象到单个对象名下。}
mylist <- list(object1,object2,...)
if(FALSE){列表的创建}
g <- "My First List"
h <- c(25,26,18,39)
j <- matrix(1:10, nrow=5)
k <- c("one","two","three","four")
mylist <- list(title=g, age=h, j, k)
if(FALSE){列表的访问}
mylist$age
mylist[[3]]
目录
相关文章
|
6月前
|
Go 索引
掌握Go语言:Go语言范围,优雅遍历数据结构,简化代码操作实战解析(24)
掌握Go语言:Go语言范围,优雅遍历数据结构,简化代码操作实战解析(24)
|
6月前
|
存储 Go iOS开发
掌握Go语言:探索Go语言指针,解锁高效内存操作与动态数据结构的奥秘(19)
掌握Go语言:探索Go语言指针,解锁高效内存操作与动态数据结构的奥秘(19)
|
1月前
|
存储 人工智能 算法
数据结构与算法细节篇之最短路径问题:Dijkstra和Floyd算法详细描述,java语言实现。
这篇文章详细介绍了Dijkstra和Floyd算法,这两种算法分别用于解决单源和多源最短路径问题,并且提供了Java语言的实现代码。
69 3
数据结构与算法细节篇之最短路径问题:Dijkstra和Floyd算法详细描述,java语言实现。
|
1月前
|
存储 Go 容器
深入探究Go语言中的数据结构
深入探究Go语言中的数据结构
40 3
|
2月前
|
存储 JSON NoSQL
redis基本数据结构(String,Hash,Set,List,SortedSet)【学习笔记】
这篇文章是关于Redis基本数据结构的学习笔记,包括了String、Hash、Set、List和SortedSet的介绍和常用命令。文章解释了每种数据结构的特点和使用场景,并通过命令示例演示了如何在Redis中操作这些数据结构。此外,还提供了一些练习示例,帮助读者更好地理解和应用这些数据结构。
redis基本数据结构(String,Hash,Set,List,SortedSet)【学习笔记】
|
3月前
|
搜索推荐 算法 Go
深入探索堆:Go语言中的高效数据结构
深入探索堆:Go语言中的高效数据结构
|
6月前
|
存储 缓存 算法
【C 言专栏】C 语言中的数据结构应用
【5月更文挑战第4天】本文探讨了C语言中的核心数据结构,包括数组、链表(单链表和双链表)、栈、队列、二叉树(如二叉搜索树和二叉堆)以及图结构。这些数据结构在程序设计中扮演着关键角色,如数组的快速访问、链表的动态管理、栈和队列的处理流程控制、树和图的复杂关系表示。理解并选择适当的数据结构可优化程序性能,而内存管理和算法优化则进一步提升效率。通过案例分析和展望未来发展趋势,本文旨在帮助读者深化对C语言数据结构的理解和应用。
101 4
【C 言专栏】C 语言中的数据结构应用
|
5月前
|
存储 安全 Java
Go语言入门之路——数据结构
Go语言入门之路——数据结构
124 0
|
6月前
|
BI 索引
R语言数据结构-----向量
R语言数据结构-----向量
30 4
|
6月前
|
索引
R语言数据结构-----列表
R语言数据结构-----列表
35 3