2012-05-17 1 views
2

내 패키지 내에서 data.table 패키지를 사용하고 네임 스페이스 및 설명 파일에 data.table 네임 스페이스를 가져옵니다. 내 기능 중 하나에서 내가 data.tableR : data.table 패키지 네임 스페이스 가져 오기, 설명 할 수없는 메모리 소비 증가

dt <- data.table(df) 

에 data.frame을 변환 data.table 기능을 사용하지만 data.table() 메모리 사용을 호출 한 시점에서, 내 함수를 호출 할 때 즉시 점프 R이 응답하지 않습니다. 한 줄씩 줄이고 메모리를 적게 사용하면 함수 내의 코드가 제대로 작동합니다. 또한 라이브러리 (data.table)를 함수에 넣으면 모든 것이 잘됩니다. 필자는 라이브러리 (data.table)를 함수에 넣지 않고 종속성을 선언하려고했습니다. 그러나, 뭔가 잘못되고있는 것처럼 보입니다. Mac OS X 10.6.8에서 R-2.14.0을 실행 중입니다.

이유가 무엇인지 설명 할 수있는 사람이 누구일까요? (필자의 기능에서 라이브러리 (data.table)을 사용하지 않고) 어떻게 해결할 수 있습니까? 특별한 순서없이

+2

네임 스페이스 및 설명 파일에서 가져 오기를 어떻게 수행합니까? – Dason

+2

재현 가능한 예제없이 문제를 진단하는 것은 어렵습니다. 패키지 원본을 제공 할 수 있습니까? – jthetzel

답변

3

일부 무작위 추측은 :

는 수입을 사용하여 시도하거나 전용 설명에 필드에 따라 달라집니다. NAMESPACE에서도 가져올 필요가 있다고 생각하지 않지만 잘못된 것일 수 있습니다. 그게 왜 메모리 사용을 설명 할 지 모르지만.

무엇이 df입니까? 그것이 어떤 방식 으로든 재귀 적이거나 이상한가? 가능한 경우 알려 주시기 바랍니다. str(df).

시도 as.data.table(df)data.table(df)보다 빠릅니다. 그러나 당신의 문제가 그 것과 다르다고 들린다.

함수 호출이 반복적으로 호출되고 있습니까? 왜 반복적으로 dfdt으로 변환하는 것이 메모리를 사용하는지 알 수는 있지만, 단지 library(data.table)을 호출하면 그 속도가 빨라지지는 않습니다.

시도되도록 R --vanilla R로 시작 .Rdata 더 다른 것들 사이에서, 시동시 로딩되고 (data.table의 마스킹 기능을 포함 할 수있다). 없다 자신의 패키지를 개발 한 후에 어떤 종류의 함수 이름이 충돌하거나 패키지의 순서가 search() 인 경우 그럴 듯합니다.

그렇지 않으면 추가 정보가 필요합니다. 이런 일이 저에게 일어나거나 전에보고 된 것과 비슷한 것을 기억하지 못합니다.

그리고 data.table의 버전을 사용하고 계십니까? data.table가 내에서 단순히 import 에드 때 그것은 또한 실행된다 .onAttach에서 너무 .onLoad

  • 이전 data.table 설정 코드 : (아직 크랑)에 R-포지에 v1.8.1에서이 버그 수정이 있습니다 누락 된 data.table 옵션과 관련된 # 1916을 수정하는 패키지

하지만 CRAN에서 1.8.0를 사용하고 가져 오기 (만)보다는 나는 당신이 메모리 소비 점프보다는 옵션을 찾을 수 없다는 오류가 발생하는 기대 따라하는 경우.

+0

data.table v1.8.0을 사용하고 있습니다. 그래서 가져 오기 만하면 오류 메시지가 나타나지만 그렇지 않습니다. 이 경우에는 다른 data.table 함수가 검색 경로에서 발견되어 큰 메모리를 소비하는 것으로 보입니다. Depends 아래에 data.table을 넣으려고했는데 모든 것이 잘 작동합니다. df는 ~ 500000 개의 행과 4 개의 열이있는 data.frame이며 Depends 메모리 소비량 아래의 data.table 코드를 실행할 때 ~ 2GB입니다. 그러나 data.table이 Imports 아래에있는 경우 동일한 코드의 메모리 사용량은 ~ 40GB입니다 (Mac에서는 서버에서 실행하려고했습니다) – Vanja

+0

1.8.1로 업그레이드 할 수 있습니까? 적어도 버그 수정으로 수정되는지 확인하기 만하면됩니다. 다른 data.table 함수가 검색 경로에서 발견되었다고 말하면 '찾을 수 있습니까?' –

+0

1.8.1로 업그레이드하면 모든 것이 수정되었습니다. 이제 가져 오기 및 의존 모두에서 정상적으로 작동합니다. 가져 오기에 넣을 때 이전 버전의 문제가 무엇인지 알 수 없습니다. 검색 경로에서 data.table 함수를 찾을 수는 없지만 data.table이 어떻게 든 생성되고있는 것 같습니다.! : 고양이 (클래스 (df)) > data.frame find ("data.table") > 문자 (0) DT <- data.table (DF) * 메모리에 점프 고양이 (클래스 (DT)) > data.table data.frame 만들어졌습니다 그래서 data.table하지만 때 생성 된 dt에 "["함수를 사용하려고하면 누락 된 옵션에 대한 오류가 발생합니다. – Vanja

관련 문제