vlambda博客
学习文章列表

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)

则数据类型唯一,从根本上解决问题。