2.2.2 矩阵
矩阵是一个二维数组,只是每个元素都拥有相同的模式(数值型、字符型或逻辑型)。
可通过函数matrix()创建矩阵。
创建矩阵
y <- matrix(1:20, nrow = 5, ncol = 4) # 创建一个5x4的矩阵,nrow和ncol用以指定行和列的维数
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)) # dimnames包含了可选的、以字符向量表示的行名和列名
mymatrix
矩阵下标的使用
x <- matrix(1:10, nrow = 2)
x
x[1, c(4,5)] # 选择了第一行第四、第五列的元素
数组,与矩阵类似,但是维度可以大于2;
数组函数 myarray <- array (vector, dimensions, dimnames)
dimensions 是一个数值型向量,给出了各个维度下标的最大值
dimnames是可选的、各维度名称标签的列表
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) )
z
z[1,2,3]
数据框
由于不同的列可以包含不同模式(数值型、字符型等)的数据,数据框的概念较矩阵来说更为一般。
patientID <- c(1,2,3,4)
age <- c(25,34,28,52)
diabetes <- c("Type1","Type2","Type1","Type1")
status <-c("Poor","Improve","Excellent","Poor")
patientdata <- data.frame(patientID,age,diabetes,status)
patientdata
patientdata[1:2] #数据框的前两列
patientdata[c("diabetes","status")]
patientdata$age
table(patientdatastatus) # 可从大的数据框中选取部分数据形成新的列联表!
2-6 因子的使用
patientID <- c(1,2,3,4)
age <- c(25,34,28,52)
diabetes <- c("Type1","Type2","Type1","Type1")
status <- c("Poor","Improved","Excellent","Poor")
diabetes <- factor(diabetes)
status <- factor(status, ordered = TRUE)
patientdata <- data.frame(patientID,age, diabetes,status)
处理数据对象的使用函数
str(patientdata) # 显示对象的结构
summary(patientdata) # 显示对象的统计概要
length(patientdata) # 显示对象中元素/成分的数量
dim(patientdata) # 显示某个对象的维度
class(patientdata) # 显示某个对象的类或类型
mode(patientdata) # 显示某个对象的模式
names(patientdata) # 显示某个对象中各成分的名称
head(patientdata) # 列出某个对象的开始部分
tail(patientdata) # 列出某个对象的最后部分
ls(patientdata) # 显示当前的对象列表
3.1 使用图形
attach(mtcars)
class(mtcars)
head(mtcars)
str(mtcars)
plot(wt,mpg)
abline(lm(mpg~wt)) # 添加最优拟合曲线
title("Regression of MPG on Weight")
detach(mtcars)
pdf("mygraph.pdf") # 要通过代码保存图形,将绘图语句夹在开启目标图形设备的语句和关闭目标图形设备的语句之间即可。
attach(mtcars)
plot(wt,mpg)
abline(lm(mpg~wt))
title("Regression of MPG on Weight")
detach(mtcars)
dev.off() # 除了pdf(),还可以使用函数win.metafile(), png(), jpeg(), bmp(), tiff(), xfig()和postscript()将图形保存为其他格式
3.2 图形初阶
dose <- c(20,30,40,45,60)
drugA <- c(16,20,27,40,60)
drugB <- c(15,18,25,31,40)
plot(dose, drugA, type = "b") # type = "b" 表示同时绘制点和线
plot(dose, drugA, type = "p")
可以通过修改称为图形参数的选项来自定义一幅图形的多个特征(字体、颜色、坐标轴、标签)。
一种方法是通过函数par()来指定这些选项。以这种方式设定的参数值除非被再次修改,否则将在会话结束前一直有效。
不加参数地执行par()将生成一个含有当前图形参数设置的列表。添加参数no.readonly = TRUE 可以生成一个可以修改的当前图形参数列表。
opar <- par(no.readonly = TRUE) # 复制了一份当前的图形参数设置
par(lty = 2, pch =17) # 将默认的线条类型修改为虚线(lty = 2),并将默认的点符号改为了实心三角(pch = 17)
plot(dose,drugA,type = "b")
par(opar)
指定图形参数的第二种方法是为高级绘图函数直接提供 optionname = value 的键值对。
这种情况下,指定的选项仅对这幅图本身有效
plot(dose, drugA, type = "b", lty = 2, pch = 17)