用R语言把超大文本文件拆分成几个小文本文件
近一段时间一直在研究一些医院的数据。前两天遇到一个尴尬:想打开一个仅有3G左右的文本文件(有时候必须要打开,直接传到数据库满足不了需求),破电脑(4G内存的电脑)就是打不开(用的Notepad++)。就是这造型:
file_split <- function(filename,eachfile_lines_num){ #建立函数 c <- file(filename,"r") #建立链接 varnames <- paste("splitfile", 1:1000, sep = "_") #建立尽可能多但不要太多的动态变量名 i <- 1 #初始值 while(TRUE){ assign(varnames[i],value = readLines(c,n = eachfile_lines_num)) #分别把从filename中读出来的数据存放在变量中 write.table(get(varnames[i]),paste(varnames[i],".txt",sep = "")) #分别把存放在变量中的数据写出到文件中 if (length(get(varnames[i])) < eachfile_lines_num) break else i <- i + 1 #判断循环停止条件 } return(i) #返回文件数量 }
3.对拆分的文件进行处理。由于过程中用到了readLines(),因此拆出来的文件每一行是一个字符串,有引号。这好像不符合要求,只需用Windows记事本或notepad++或其他文本处理应用处理一下就行。在notepad++中执行“搜索 -> 替换”把双引号替换成\0就行了。
数据分析咨询请扫描二维码