R 语言的六种数据结构

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 进行了命名


转载于:https://my.oschina.net/sanji/blog/225191

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值