课程的设计形式Rproject,Rdata
R语言里面的数据,在最终结果之前不要频繁写出去,读进来,
使用用Rdata,save保存,load加载
cancergene <- c("TP53","ERBB2","BRCA1")
b <- c("zhangsan","lisi","wangermazi")
保存使用save, 可以同时保存多个数据
save(cancergene,b,file = "twoinone.Rdata")
清空环境
rm(list = ls())
加载已有数据使用load
load(file = "twoinone.Rdata")
###############################
加载练习数据
load(file = "data/01_TCGA_BRCA_exprSet.Rdata")
###################################################
数据太大的时候,最直观test——获取前10行,前10列
test <- exprSet[1:10,1:10]
view(test)
##############################
学习数据选取(三种思维模式)
第1,通过位置获取
获取第一行
test[1,]
获取第1列
test[,1]
使用$获取列
test$subgroup
选取第2到4行
test[2:4,]
选取第2到4列
test[,2:4]
选取第2到4行,3到5列
test[2:4,3:5]
########################
第2,通过行名和列名获取
########################
其中行名获取的方法十分推荐
但是记住一点, 行名不能重复,且必须保证行名是character
index <- c("TCGA-BH-A1FL-01A-11R-A13Q-07","TCGA-E2-A106-01A-11R-A10J-07", "TCGA-A2-A4S3-01A-21R-A266-07", "TCGA-AR-A2LL-01A-11R-A180-07", "TCGA-E9-A3Q9-01A-11R-A21T-07")
用名称提取行
myrows <- exprSet[index,]
用名称提取列
mycols <- exprSet[,c("subgroup","sample","SAMD11")]
用名称同时提取行和列
mydata <- exprSet[index,c("subgroup","sample","SAMD11")]
########################
第3,还可以通过逻辑获取
########################
逻辑获取,先产生逻辑值
exprSet$subgroup == "Normal"(exprSet中选取subgroup这一列与"Normal"相比,产生T or F)
index <- exprSet$subgroup == "Normal"(保存逻辑值到index)
head(index)(查看前6个值)
逻辑常用于提取行
mydata = exprSet[index,]
mydata = exprSet[exprSet$subgroup == "Normal",]
view(mydata )
在此基础上可以再选择列
mydata1 = exprSet[index,c(1:5)](既用位置,又用逻辑)
有多少种方法可以产生逻辑值??
1.最重要的逻辑判断,如比较大小
2.函数产生,比如grepl,%in%
###################################
行列的选择,还有一个重要的函数subset
subset,第一个位置是数据,第二个位置是从数据里选行(逻辑值),第三个位置是从数据里列,名称
mydata2 <- subset(exprSet,exprSet$subgroup == "Normal",select = c("subgroup","sample","SAMD11"))
mydata3 <- subset(exprSet,exprSet$subgroup == "Normal",select = c(1:2000))
总共1000列(图片左下角),选1-2000列会报错
####################################
mydata <- exprSet[1:10,1:10]
删除列和增加列
删掉第一列
mydata1 <- mydata[,-1]
增加一列(列名和值),一般新增列默认放到最后一列
mydata1$subgroup <- LETTERS[1:10]
view(mydata1)
使用位置调整顺序,
把最后一列调整到第1列,很常用
mydata2 <- mydata1[,c(10,1,2,3,4,5,6,7,8,9)]
mydata3 <- mydata1[,c(10,seq(1,9))]
修改部分名称
colnames(test)[3:5] <- c("GeneA","GeneB","GeneC")
rownames(test)[1:2] <- c("sampleA","sampleB")
复习:
data.frame,
colnames,
rownames,
[],
$,
save(),
load()
subset