数据太大的时候,R语言如何读取?

 一般我喜欢把文件储存成csv格式,然后用read.csv读取文件。

也有的人习惯储存数据为txt格式,然后用read.table读取文件。

但是当数据太大的时候,read.csv和read.table似乎就不适用了。

首先读取慢,而且读到最后会读一个寂寞。

比如下面这个文件:

有三个多G,用read.csv读取的时候,会发生什么状况呢?

setwd("D:\\")
dir()
data <- read.table("GSE149614_HCC.scRNAseq.S71915.count.txt",header = T,sep="\t")
##########
##########   我等了十几分钟,还没读进去    ################

我等了十几分钟,还没读进去。

当然也有可能是电脑的原因,如果是苹果电脑,可能会好点。

但是读到最后会发现,报错了。因为文件太大了,这里我就不向大家展示了,直接点击stop,结束运行:

 我们再换一种方式读取:

library(readr)
read_table()

 使用readr这个软件包里面的read_table,这个据说读取数据比read.table要快很多。

但是,面对三个多G的数据,还是慢,这里我就不展示了,大家可以自己去体验一下。

那么,面对这么大的数据,我们如何读取呢?

这里向大家推荐一个好用的函数fread。

 fread,可以理解为:fast read (自创的)。

下面开始运行代码:

install.packages("data.table")
library(data.table)
dir()
data <- fread("GSE149614_HCC.scRNAseq.S71915.count.txt",sep = "\t",header = F)

fread这个函数再data.table中,如果要运行它,先下载一个data.table软件包。

 可以看到,在读取的过程中能够看到进度条。

能看到进度条,就有盼头。

读取完数据以后我们查看一下文件:

dim(data)
class(data)



###############

> dim(data)
[1] 25712 71916
> class(data)
[1] "data.table" "data.frame"

可以看到数据有25712行,71916列,这比TCGA任何一个数据库的文件都大。

文件的类型既属于table,也属于数据框。

查看一下数据:

data[1:10,1:110]

> data[1:10,1:110]
               V1 V2 V3 V4 V5 V6 V7 V8 V9 V10 V11 V12 V13 V14 V15 V16 V17 V18 V19 V20
 1:  RP11-34P13.7  0  0  0  0  0  0  0  0   0   0   0   0   0   0   0   0   0   0   0
 2:    FO538757.2  0  0  0  0  0  0  0  0   0   0   0   0   1   0   0   0   0   0   0
 3:    AP006222.2  1  1  0  0  0  0  0  0   0   0   0   0   1   0   0   0   0   1   1
 4: RP4-669L17.10  0  0  0  0  0  0  0  0   0   0   0   0   0   0   0   0   0   0   0
 5:  RP5-857K21.4  0  0  0  0  0  0  0  0   0   0   0   0   0   0   0   0   0   0   0
 6: RP11-206L10.9  0  0  0  0  0  0  0  0   0   0   0   0   0   0   0   0   0   0   0
 7:        FAM87B  0  0  0  0  0  0  0  0   0   0   0   0   0   0   0   0   0   0   0
 8:     LINC00115  0  0  0  0  0  0  0  0   0   1   0   0   1   0   0   0   0   0   0
 9:        FAM41C  0  0  0  0  0  0  0  0   0   0   0   0   0   0   0   0   0   0   0

用fread读取出来的数据,也是可以使用美元符提取列的,当然也可以进行数据匹配。

那么什么情况下会用到大样本的数据呢?

比如我们要用GTEx数据库进行分析正常人的组织样本测序数据。

又比如我们要分析单细胞的测序数据等。

评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

楷然教你学生信

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值