vlambda博客
学习文章列表

【R语言】R的数据格式


R的数据格式

数据格式,或者说数据结构,简单地说,就是软件用来识别数据的一种方式。

最基本的有5种,有向量、矩阵、数组、数据框和列表。其实归结起来,就是一种:向量。

可以使用c()函数来创建向量。

c1<- c(1,3,5,7,11)创建了一个命名为c1 的向量

c1<- c(1,3,5,7,11)
c2 <- c("feng","huo","shui","yun")
c3 <- c(TRUE,F,FALSE,T)

用类型函数来看一下,typeof,翻译就是...的类型,所以用它来看变量类型,class也行的

数值型、字符型和逻辑型

向量是用于存储数值型、字符型或逻辑型数据的一种一维数组。

向量除了大小,还要有位置,如c2[1]

矩阵就是所说的matrix,所以我们就还是用matrix函数来创建一个矩阵。

c4 <- matrix(1:4058)
#1:40是1-40,矩阵有行列,所以5就是行,8就是列
c4 <- matrix(1:40, nrow = 5,ncol = 8)

加上行名和列名,rownames或者colnames 或者**dimnames**

#行名
c5 <- c("feng1","feng2","feng3","feng4","feng5")
#列名
c6 <- c("feng6","feng7","feng8","feng9","feng10","feng11","feng12","feng13")
c7 <- matrix(1:40, nrow = 5,ncol = 8, dimnames = list(c5,c6))
【R语言】R的数据格式

dimnames就是数据的维名,dimnames=list(行名,列名),所以你们在看到网上一些代码在处理TCGA的时候,经常会先去除行名和列名,转换矩阵,最后再dimnames补上(TCGA读取进来后,行名列名是字符,表达量是数值,所以需要先去除行列后再对表达量进行操作,操作完了再dimnames合起来)。

生信分析最常见的一种格式,data.frame,数据框,比如临床数据,年龄是数值型,分期是字符型,这样的数据用matrix显然不合适,那就只能用data.frame,所以给数据框一个定义:一种能够存储多种类型数据的二维矩阵。

patientID <- c(LETTERS[1:4])
age <- c(20:23)
stage <- c("stageI","stageII","stageIII","stageIV")
T <- c("T1","T2","T3","T4")

先创建四个对象,刚才矩阵用的是matrix,这里数据框就还是用data.frame

c8 <- data.frame(patientID,age,stage,T)
c8
【R语言】R的数据格式
#加上行名
rownames(c8) <- patientID
#这样行名是病人ID,多了一列也要去掉
c8 <- c8[-1]

list非常复杂,比如看过三维的PCA图,三维甚至更多维度,就是用list来创建

name <- "feng9"
c9 <- list(title = name,data = c1, c4, c7)
c9

list就是对象的有序集合。这个对象可以是除了list之外的所有数据类型,可以是向量、矩阵、数据框。