2013-08-29 2 views
6

data.table에 새 열을 만들고 동시에 기존 열을 업데이트 할 수 있습니까? 다음은 작동하지 않았습니다. 감사. segfault의 겁에 질린하나의 열을 업데이트하고 다른 열을 만들 때 R data.table segfault

library(data.table) 
dt <- data.table(x=runif(4), y=runif(4), z=c("x","x","y","y")) 
dt[, c("x", "y") := list(x[1], y[1]), by=z]  # works 
dt[, c("x", "newx") := list(x[1], y[1]), by=z] 

:

address 0x20000010, cause 'memory not mapped' 

역 추적 :

1: [.data.table(dt, , :=(c("x", "newx"), list(x[1], y[1])), by = z) 
2: dt[, :=(c("x", "newx"), list(x[1], y[1])), by = z] 
+0

부끄러운 소리, 그래, 전에도 그랬어. 나는 방금 버그로 제출하는 대신 그것을하는 것을 피한 것 같습니다. – Frank

답변

5

예. 그러나 다음과 같은 수정 사항을 얻는 R-포지에서 v1.8.9 필요합니다

오 믹싱은 =로 추가 한 DT [:= (existingCol = ..., 뉴콜 = ...)로 업데이트. ..] 이제 오류 또는 segfault # 2778 및 # 2528없이 작동합니다. 을 신고 해 주신 Arunkumar Srinivasan에게 감사 드리며 좋은 재현성있는 예가 있습니다. 테스트가 추가되었습니다.

v1.8.9의 다른 변경 사항은 latest NEWS (실시간 업데이트)을 참조하십시오.

+2

v1.8.9의 .tar.gz 파일은 어디에서 찾을 수 있습니까? –

+5

@DWin R-Forge에 있습니다. 여기서는'R-Forge.R-project.org/src/content/data.table_1.8.9.tar.gz'입니다. 'install.packages ("data.table", repos = "http://R-Forge.R-project.org", type = "source")'와 같이 직접 설치할 수 있습니다. –

+0

감사합니다. 저를 믿으십시오. 나는 소스에서 설치하는 방법을 알고 있습니다. 그리고 나는 일반적으로 꾸러미를 찾을 수 있지만, R-Forge의 현재 설정은 나의 일반적인 검색 전략을 좌절시키는 것처럼 보입니다. R-Forge의 포장 된 패키지의 표준 위치가 있습니까? –

관련 문제