面对大数据你小小的电脑是不是感觉到越来越力不从心了。R语言中专门提高了一些包,突破内存的限制,让小电脑也能处理大数据。常见的包如下:

描述
ff提供了一种数据结构,保存在硬盘中,但是操作起来就如同在内存中一样
bigmemory支持大规模矩阵的创建、储存、读取和操作。矩阵被分配到共享内存或内存映射的文件中(memory-mapped files)
filehash实现了简单的key-value数据库,在其中特征字符串key与存储在硬盘中的数据value相关联。
ncdf, ncdf4Provides an interface to Unidata netCDF data files.
RODBC, RMySQL,
ROracle, 
RPostgreSQL,
RSQLite
可以用这些包读取外部关系数据库管理系统的数据

注:转自《R in action》

但是这些包学起来也不容易,我看了半天的说明书也没看懂怎么用,奈何英文不好,中文材料也相对少。

现在提供了一个简单直观的方法处理大数据,缺点是消耗时间长,不能整体处理数据,只能处理能分段处理的数据。

具体代码如:

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

#R语言下  大数据分段处理策略

#用readlines() 每次读取一定行数,进行分段处理

# writed by mine date:2013.12.22

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

fl=file.choose()  

c=file(fl,”r”)

on.exit(c)

rlnm=readLines(c,n=1)  #第一行为列名

mks=1

nrows=1000             #设置处理的行数

while(T){

 rl=readLines(c,n=nrows)   #读nrows行

 if(length(rl)==0){

   break

 }else{

   rl=c(rlnm,rl)

   mks=mks+nrows

   data=read.table(text=rl,sep=“t”,head= T,stringsAsFactors=F)#从rl_all中读到data.frame

#myfun(data)

cat(cat(“已处理”,mks,”行n”)

 }

}

close(c)

发表回复