2013-04-24 1 views
3

를 업데이트하지 않으면 함수가 여기에 참조로 더 이상

f <- function(orderData){ 
     colNames <- paste0("lim_",sort(unique(orderData[,XLM]))) 
     orderData[, (colNames):={lim_=factor(XLM);lapply(data.table(model.matrix(~ lim_:w_qalim + 0)), cumsum)}] 
} 

및 일부 샘플 데이터를 내 상자에 참조로 dt를 업데이트 할 수 있지만 f(dt1)하지 않는 f(dt) 실행

dt = data.table(XLM=sample(1L:300L,5e4,T), w_qalim=sample(1L:5L,5e4,T)) 
dt1 = data.table(XLM=sample(1L:300L,1e2,T), w_qalim=sample(1L:5L,1e2,T)) 

입니다. 그것은 100 datatable.alloccol

답변

4
데이터 테이블의 길이가 2 두 경우 모두

과 truelength와 함께 할/뭔가를 기대입니다 : dtcolNames의 경우, 그러나

> length(dt); truelength(dt) 
[1] 2 
[1] 100 
> length(dt1); truelength(dt1) 
[1] 2 
[1] 100 

것은 그래서 300 2+ 300은 truelength를 초과하지만 dt1colNames의 경우 81은 2 + 81이 아닙니다.

예를 들어 더 큰 truelength를 미리 할당 할 수 있습니다.

alloc.col(dt, 1000) 

또는 모든 데이터 테이블이 큰 기본 가질 수 있도록 기본을 설정할 수 있습니다 확인

options(datatable.alloccol = 1000) 

?alloc.col 참조를

+0

그래서 내가 사본이 때 이루어졌다 생각하는 것은 괜찮다고 생각 나는 너무 많은 칼럼을 만들고 있었다. 지적 해 주셔서 고마워요? alloc.col – statquant

관련 문제