0

我编写了一个函数来重塑日志文件(600Mb)以获取数据帧,但未能获得预期的结果。问题是当我运行大约 10Mb 的日志文件时,我可以获得预期的结果,但是当我运行完整文件时它失败了,这似乎是由内存分配导致的。

我如何解决它?

Reshape_data <-function(X) {
  n<-length(X[,1])
  Date<-vector(length=n)
  Time_Temp<-vector(length=n)
  status_Temp<-vector(length=n)
  m <- 0
  i <- 1
  while(is.na(X[i,]) == FALSE) { 
    if (substr(X[i,],1,1)!="#") {            
      m<-m+1
      Date[m]<-sapply((strsplit(as.character(X[i,])," ")), "[", 1) 
      Time_Temp[m]<-sapply((strsplit(as.character(X[i,])," ")), "[", 2) 
      status_Temp[m]<-sapply((strsplit(as.character(X[i,])," ")), "[", 11)
    }        
    i <- i+1
  }
  if(m>0){
    Time_Temp<-Time_Temp[1:m]
    status_Temp<-status_Temp[1:m]
  }else 
    {
      Time_Temp<-NULL 
      status_Temp<-NULL
    }
  mydf<-data.frame(Time_Temp,status_Temp)
  return(mydf)
}

AA_log<-read.table("ex130828.log",sep="\t",stringsAsFactors=FALSE,encoding="utf-8")
AA_Tidy<-Reshape_data(AA_log)
4

0 回答 0