R语言学习笔记(一)数据结构
程序员文章站
2022-07-14 21:04:31
...
使用软件: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包含了矩阵的元素,nrow和ncol用以指定行和列的维数,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){DataFrame是R语言中最常用的数据结构}
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]]
上一篇: R语言:创建数据框