2013-05-22 7 views
0

에 나는 큰 data.table dataTs1이 도달 메모리 제한은 R

R.

에서 이상한 문제를 겪고 :
Classes ‘data.table’ and 'data.frame': 419172 obs. of 5 variables: 
$ TimeStamp: chr "01MAR13:07:15:00" "01MAR13:07:16:00" "01MAR13:07:18:00" ... 
$ col1  : chr "ALL1" "ALL1" "ALL1" "ALL1" ... 
$ col2  : int NA NA NA NA NA NA NA NA NA NA ... 
$ col3  : int 4 4 4 4 4 4 4 4 4 4 ... 
$ col4  : int 621 810 4 4 8 1 3 1 1 1 ... 

내가 fread 기능을 사용하여이 테이블을로드.

메모리 할당이 괜찮은 것 같습니다. % H - strptime (dataTs1 $ 소인 "%의 D %의 B 형 %의 Y

dataTs1 $ 타임 스탬프 <을 :

> memory.size(max=TRUE) 
[1] 82.94 

는 I는 I 쓴 그래서의 POSIX 제 1 라인의 클래스를 수정하려고 : %의 M : %의 S ")

그리고이 줄을 내가 ... 16G의 내 메모리 제한에 도달 할 수 있지만 쓸 때 :

test <- 1:length(dataTs1$TimeStamp) 
dataTs1$TimeStamp <- test 

메모리 오버로드없이 완벽하게 작동합니다.

저는 R이 새롭고 감사드립니다. 만약 내가 여기서 잘못하고있는 것을 알아 내면 도움이 될 것입니다.

들으


편집 : 사실

는 가끔 이상한 경고를 내가 메모리 과부하를하지 않는 경우 :

>dataTs1[,TimeStamp:=strptime(TimeStamp,"%d%b%y:%H:%M:%S")] 
Warning messages: 
1: In `[<-.data.table`(x, j = name, value = value) : 
    Supplied 9 items to be assigned to 419172 items of column 'TimeStamp' (recycled leaving remainder of 6 items). 
2: In `[<-.data.table`(x, j = name, value = value) : 
    Coerced 'list' RHS to 'character' to match the column's type. Either change the target column to 'list' first (by creating a new 'list' vector length 419172 (nrows of entire table) and assign that; i.e. 'replace' column), or coerce RHS to 'character' (e.g. 1L, NA_[real|integer]_, as.*, etc) to make your intent clear and for speed. Or, set the column type correctly up front when you create the table and stick to it, please. 
> str(dataTs1) 
Classes ‘data.table’ and 'data.frame': 419172 obs. of 5 variables: 
$ TimeStamp: chr "c(NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, N"| __truncated__ "c(NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, N"| __truncated__ "c(NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, N"| __truncated__ "c(NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, N"| __truncated__ ... 
$ V6FCDSB : chr "ALL1" "ALL1" "ALL1" "ALL1" ... 
$ V6FCDTD : int NA NA NA NA NA NA NA NA NA NA ... 
$ _TYPE_ : int 4 4 4 4 4 4 4 4 4 4 ... 
$ N  : int 621 810 4 4 8 1 3 1 1 1 ... 
- attr(*, ".internal.selfref")=<externalptr> 
+0

어떤 R 버전을 사용하고 있습니까? 'strptime'으로 메모리 누수가있었습니다. – James

+0

참고로 할당해야합니다 :'dataTs1 [, TimeStamp : = strptime (타임 스탬프, % d % b % y : % H : % M : % S ")]' – Roland

+0

@James 3.0.0 버전을 사용 중입니다 –

답변