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)
则数据类型唯一,从根本上解决问题。
