R拥有许多用于存储数据的对象类型,包括标量、向量、矩阵、数组、数据框和列表,下面来为大家简单介绍一下

标量

标量是只含一个元素的向量,例如f <- 3、g <- "US"和h <- TRUE。它们用于保存常量

向量

函数c,是组合函数

a <- c(1, 2, 5, 3, 6, -2, 4)
b <- c("one", "two", "three")
c <- c(TRUE, TRUE, TRUE, FALSE, TRUE, FALSE)
a[c(2, 4)] 用于访问向量a中的第二个和第四个元素,这里没有下标,从 1 开始计算距离

矩阵

y <- matrix(1:20, nrow = 5, ncol = 4) 
#以上表示创建 5*4 的矩阵,矩阵数据由 1 ~ 20 来进行田填充
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))

其中cells包含了矩阵的元素,nrow和ncol用以指定行和列的维数,dimnames包含了可选的、

以字符型向量表示的行名和列名。选项byrow则表明矩阵应当按行填充(byrow=TRUE)还是按

列填充(byrow=FALSE),默认情况下按列填充,以上代码创建了 2*2 的矩阵,矩阵的行名为

R1、R2 列名为 C1、C2,数据 cells 按照行来做填充
x[2, ] 表示选取矩阵第二行元素
x[, 2] 表示选取矩阵第二列元素
x[1, 4] 表示选取矩阵第一行第四列元素
x[1, c(4, 5)] 表示选取矩阵第一行的第四个第五个元素


数组

其实是立方体 x*y*z

myarray <- array(vector, dimensions, dimnames)
其中vector包含了数组中的数据,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[1,2,3] 为 15 表示选取 x=1 y=2 z=3 的值,只有这一种选取方式

数据框(称之为数据集更好一些)

可以看做是矩阵的特殊形式,每列可以使用不同的数据类型,所有的列的数据数量必须相同否则报错
mydata <- data.frame(col1, col2, col3, ...)
数据框可通过函数data.frame()创建,其中的列向量col1, col2, col3,… 可为任何类型(如字符型、数值型或逻辑型)。每一列的名称可由函数names指定。
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)
patientdata 
数据框的基本选取方式和矩阵类似
patientdata[1:2] 表示选取第一列第二列数据 
patientdata[c("diabetes", "status")] 表示选取列名为 diabetes、status的数据


列表

列表(list)是R的数据类型中最为复杂的一种。一般来说,列表就是一些对象(或成分,

component)的有序集合。列表允许你整合若干(可能无关的)对象到单个对象名下。例如,某个

列表中可能是若干向量、矩阵、数据框,甚至其他列表的组合。可以使用函数list()创建列表:

g <- "My First List"
h <- c(25, 26, 18, 39)
j <- matrix(1:10, nrow = 5)
k <- c("one", "two", "three")
mylist <- list(title = g, ages = h, j, k)
mylist
以上创建一个列表,把标量 g、向量 h、矩阵 j、向量 c 放入列表当中,并且为 g 和 h 进行了命名