數(shù)據(jù)結(jié)構(gòu)
Vector向量—一維
> c(1,2,5,6,7)
[1] 1 2 5 6 7
> sample(1:100,5) #從1到100這100個(gè)數(shù)中隨機(jī)挑選5個(gè)數(shù)
[1] 13 53 89 27 84
>set.seed(564) #設(shè)置隨機(jī)種子后,sample函數(shù)隨機(jī)挑選的結(jié)果一樣
Matrix矩陣—二維
矩陣:長度相同、數(shù)據(jù)類型相同;數(shù)據(jù)框:長度相同、數(shù)據(jù)類型可以不相同
List列表
列表:長度可以不同、數(shù)據(jù)類型可以不同,可以有多級元素
數(shù)據(jù)框
數(shù)據(jù)框?qū)傩悦枋? (1)維度 (2)行名/列名
數(shù)據(jù)框取子集(一個(gè)、一行、一列、多行多列)
(1)向量 對應(yīng) 位置;數(shù)據(jù)框?qū)?yīng) 坐標(biāo)
df[2,2] #第二行二列的元素
df[2,] #取一行
df[,2] #取一列
df[c(1,3),1:2] #行列雙選
(2)根據(jù)行名或列名
df[,"gene"]
df[,c('gene','exp')]
向量也可按“名字”提取子集
數(shù)據(jù)框修改
df[3,3]<- 5 ##改一個(gè)格
df$exp<-c(12,23,50) ##改一整列
數(shù)據(jù)框進(jìn)階
(1)行數(shù)較多的數(shù)據(jù)框可以截取前/后幾行查看
head(iris) #默認(rèn)前六行
tail(iris) #默認(rèn)最后六行
head(iris, 3)
(2)行列數(shù)都多的數(shù)據(jù)框可取前幾行前幾列查看
這種方法不經(jīng)過賦值,只是看看
iris[1:3, 1:3]
(3)查看每一列的數(shù)據(jù)類型和具體內(nèi)容
str(iris)
(4)去除含有缺失值的行
na.omit(df)
僅按照某一列來去除缺失值、缺失值替換:tidyr包
(5)兩個(gè)表格的連接
按列連接:cbind 行數(shù)相同
按行連接:rbind 列數(shù)相同
智能連接:merge() 需要有共同的列名
交集、并集、補(bǔ)集、全集等,參考dplyr包
列名不同時(shí),用merge
merge(test1, test3, by.x = "name", by.y = "NAME")
矩陣
矩陣新建和取子集
m <- matrix(1:9, nrow = 3)
矩陣不支持 $
矩陣轉(zhuǎn)置和轉(zhuǎn)換
轉(zhuǎn)置:t(m)
轉(zhuǎn)換:as.data.frame(m)
畫熱圖
pheatmap::pheatmap(m) #默認(rèn)有聚類
pheatmap::pheatmap(m, cluster_cols = F, cluster_rows = F)
列表
列表新建和取子集
> l <- list(m=matrix(1:9, nrow = 3),
+ df=data.frame(gene = paste0("gene",1:3),
+ sam = paste0("sample",1:3),
+ exp = c(32,34,45)),
+ x=c(1,3,5))
>l[[2]] #2代表位置
>l$df
刪除變量:rm刪除的是整個(gè)變量,不是一部分
rm(l) #刪除一個(gè)
rm(df,m) #刪除多個(gè)
rm(list = ls()) #刪除全部
ctrl+l #清除控制臺
元素的名字 - names()
元素可命名,用函數(shù)names(),
可以根據(jù)名字提取子集,
向量、數(shù)據(jù)框、列表通用。
> x =1:10
> names(x) = letters[1:10]
> x["a"]
a
1 #名字為a的元素是1

練習(xí)
> table(iris$Species) #統(tǒng)計(jì)重復(fù)值用table()
> test <- as.matrix(iris[,1:4])
> rownames(test) <- paste0("flower",1:nrow(test))
> test <- test[-(51:100),]
> tl <- list(x1=iris,x2=test) #最好對iris、test起名字,不然取子集時(shí),子集名字為空值
> tl$x2 或 tl[[2]]
> names(tl)[2] <- "td" #修改的是子集的名字,而[[2]]修改的數(shù)據(jù)本身
> colnames(y) = x$ID[match(colnames(y), x$file_name)]

總結(jié)