R将.tsv文件导入为矩阵(基本R)


本文向大家介绍R将.tsv文件导入为矩阵(基本R),包括了R将.tsv文件导入为矩阵(基本R)的使用技巧和注意事项,需要的朋友参考一下

示例

file.path建立文件路径时,许多人没有利用。但是,如果您使用的是Windows,Mac和Linux计算机,通常最好的做法是使用它来创建路径paste。

FilePath <- file.path(AVariableWithFullProjectPath,"SomeSubfolder","SomeFileName.txt.gz")

Data <- as.matrix(read.table(FilePath, header=FALSE, sep ="\t"))

通常,这对于大多数人来说就足够了。

有时会发生矩阵尺寸过大而导致在读取矩阵时必须考虑内存分配过程的情况,这意味着逐行读取矩阵。

以前面的示例为例,在这种情况下,FilePath包含一个维度文件,8970 8970其中79%的单元格包含非零值。

system.time(expr=Data<-as.matrix(read.table(file=FilePath,header=FALSE,sep=" ") ))

system.time 说花了267秒来读取文件。

   user  system elapsed
265.563   1.949 267.563

同样,可以逐行读取此文件,

FilePath <- "SomeFile"
connection<- gzfile(FilePath,open="r")
TableList <- list()
Counter <- 1
system.time(expr= while ( length( Vector<-as.matrix(scan(file=connection, sep=" ", nlines=1, quiet=TRUE)) ) > 0 ) {
    TableList[[Counter]]<-Vector
    Counter<-Counter+1
})
   user  system elapsed
165.976   0.060 165.941
close(connection)
system.time(expr=(Data <- do.call(rbind,TableList)))
   user  system elapsed
  0.477   0.088   0.565

还有futile.matrix一个实现read.matrix方法的包,代码本身将显示与示例1中描述的相同的东西。