过函数matrix()创建矩阵。一般使用格式为
其中vector包含了矩阵的元素,nrow和ncol用以指定行和列的维数,dimnames包含了可选
的、以字符型向量表示的行名和列名。选项byrow则表明矩阵应当按行填充(byrow=TRUE)
还是按列填充(byrow=FALSE),默认情况下按列填充
数组(array)与矩阵类似,但是维度可以大于2, 数组可通过array函数创建,形式如下:
myarray <- array(vector, dimensions, dimnames)
其中vector包含了数组中的数据,dimensions是一个数值型向量,给出了各个维度下标的最大
值,而dimnames是可选的、各维度名称标签的列表
由于不同的列可以包含不同模式(数值型、字符型等)的数据,数据框的概念较矩阵来说更
为一般。它与你通常在SAS、SPSS和Stata中看到的数据集类似。数据框将是你在R中最常处理的
数据框可通过函数data.frame()创建
其中的列向量col1、col2、col3等可为任何类型(如字符型、数值型或逻辑型)。每一列的名
称可由函数names指定
每一列数据的模式必须唯一,不过你却可以将多个模式的不同列放到一起组成数据框。由于数据框与分析人员通常设想的数据集的形态较为接近,我们在讨论数据框时将交替使用术语列和
变量
类别(名义型)变量和有序类别(有序型)变量在R中称为因子(factor)。因子在R中非常重要,因为它决定了数据的分析方式以及如何进行视觉呈现
函数factor()以一个整数向量的形式存储类别值,整数的取值范围是[1...k](其中k是名义型变量中唯一值的个数),同时一个由字符串(原始值)组成的内部向量将映射到这些整数上
对于字符型向量,因子的水平默认依字母顺序创建。这对于因子status是有意义的,因为
“Excellent”“Improved”“Poor”的排序方式恰好与逻辑顺序相一致。如果“Poor”被编码为
“Ailing”,会有问题,因为顺序将为“Ailing”“Excellent”“Improved”。如果理想中的顺序是“Poor” “Improved”“Excellent”,则会出现类似的问题。按默认的字母顺序排序的因子很少能够让人满意.
你可以通过指定levels选项来覆盖默认排序。例如:
各水平的赋值将为1=Poor、2=Improved、3=Excellent。请保证指定的水平与数据中的真实值
相匹配,因为任何在数据中出现而未在参数中列举的数据都将被设为缺失值。数值型变量可以用levels和labels参数来编码成因子。如果男性被编码成1,女性被编码成2,则以下语句
列表(list)是R的数据类型中最为复杂的一种。一般来说,列表就是一些对象(或成分,component)的有序集合
R语言中的几种数据结构一 R中对象的5种基本类型
字符(character)
整数 (integer)
复数(complex)
逻辑(logical:True/False)
数值(numeric:real numbers)
查看对象类型的命令:class(x)
二 R语言中有如下几种数据结构:
向量 vector() 组内元素必须类型一致,否则将会被强制转换。
(1) 创建向量的三种方式:
<span style="font-size:18px">x <- vector("numeric", length = 10)
x <- 1:4
x <- c("a",12,TRUE)</span>
(2) 强制转换的几个函数:
as.numeric(x) / as.character(x) / as.logical(x)
矩阵 matrix()一列一列的填充元素
按行合并:rbind()按列合并:cbind()
数组 array() 可以有多个维度
列表 list() 可以包含不同类型的元素
因子 factor()
(1) 分类数据/有序 vs. 无序
(2) 整数向量+标签(label)(优于整数向量)
Male/Female vs. 1/2
常用于lm(),glm()
(3) levels设置基线水平
table() 查看因子信息unclass() 去除因子属性日期
x <- Sys.Date() 得到系统当前日期
julian(x) x距离1970-01-01的天数
时间 POSIXct / POSIXlt
POSIXct:整数,常用于存入数据框 as.POSIXct()
POSIXlt:列表,还包含星期、年月日等信息。as.POSIXlt()
strptime(x, format = "...") 将一般格式转化为时间格式
注意区分: 数据类型 和 数据组成类型(数据结构)
数据类型 :整型、浮点型、字符型、布尔型(不同的语言不同的叫法)
数据结构 :向量(c())、矩阵(matrix())、数组(array())、列表(list())
注意:这里把 数据框 单拿出来讲(因为它比较特殊)
接下来通过一个实例讲解一下 S4数据结构 。这是我采用clusterProfiler做KEGG富集分析时的一个结果,其采用 S4数据结构 形式存放: