R语言读取数据fread注意参数data.table
接,今天想了想,一般提取数据的子集用[,c(i,i+1,i+2)]是没问题的,为什么昨天那个不行呢?想了想应该是数据准备的问题,用data.table::fread读数据虽然方便,但是读取后数据类型默认的是data.table和data.frame两种类型,如图:
这样读入的数据不完全支持data.frame的操作,因此在读入数据时要设置一下参数:
data.table::fread(inputfile,data.table=F)
如此就不会出大问题了。
例如:
rm(list=ls())
exp<- data.table::fread('FPKM.xls')
data<- dplyr::select(exp,1)
for (i in seq(2,length(exp),3)){
name<- unlist(strsplit(names(exp)[i],"_"))[1]
test<- apply(dplyr::select(exp,i,i+1,i+2),1,mean)
data[[name]]<- test
}
heatdata<- data[1:30,]
rownames(heatdata)<- heatdata[,1]##如果读入数据时不设置data.table=F,会报错
heatdata<- heatdata[,-1]
heatdata<- as.matrix(heatdata)
library(pheatmap)
heatmap(heatdata)
如果不设置data.table=F,则第10行代码无法运行。
当然可以用dplyr::slice解决
heatdata<- dplyr::slice(data,1:30)
但这样没有从根本上解决问题。
可以一开始读入数据时用
exp<- data.table::fread('FPKM.xls',data.table = F)
或者用
exp<- read.table('FPKM.xls',header = T)
则数据类型唯一,从根本上解决问题。