2013-06-05 3 views
2

내가 큰 data.table를 표시하기 위해 노력하고있어하지만 난 RGtk2gWidgets에서 gtable의 부진과베이스에서 View의 경직성 사이에 잡힐거야 . 예를 들어 내가 View(ex)을 할 때 채울 수있는 초 소요대안 data.table

ex<-data.table(AA=runif(50000,-10,10), 
       BB=runif(50000,-10,10), 
       CC=runif(50000,-10,10), 
       DD=runif(50000,-10,10), 
       EE=runif(50000,-10,10), 
       FF=runif(50000,-10,10), 
       GG=runif(50000,-10,10), 
       HH=runif(50000,-10,10), 
       II=runif(50000,-10,10), 
       JJ=runif(50000,-10,10), 
       KK=runif(50000,-10,10), 
       LL=runif(50000,-10,10), 
       MM=runif(50000,-10,10)) 

있을 수 있습니다. 내가 할 경우

gwin<-gwindow(title="example") 
gtab<-gtable(ex,container=gwin) 

59 초가 걸릴 것입니다.

내 문제는 View 창이 내 스크립트를 업데이트해야 할 경우 사용자가 창을 수동으로 닫아야하고 새 창을 다시 열어야한다는 것입니다. gWidgets gtable의 문제점은 제 실제 스크립트에서 결과가 채워지기 전에 종종 R이 손상되고 항상 허용되는 시간보다 오래 걸리는 약 백만 줄 (주고 받음)입니다.

사용자가 디스플레이를 통해 원본으로 사용하는 테이블을 편집 할 필요가 없거나 사용자가 원하지 않습니다. 실제로, View가 표시됩니다. 근본적인 테이블이 변경된 경우를 제외하고는 필자가 필요로하는 것은 기존의 닫고 새로운 것을 열도록 강요당하는 대신에 창 변경을 원할 수 있습니다.

이 질문은 Programmatically close the window created by `View(x)`입니다. 이는 View 개의 창을 업데이트 할 방법이 없음을 의미합니다.

나는 같은 질문에서 누군가 플롯 릭스 패키지에 대한 언급을 보았지만 어떤 플롯도 싫어했다. 단지 그렇게 보이지 않는 표를 원한다.

View의 속도를 제공하는 다른 패키지가 표시되면 프로그래밍 방식으로 창을 변경할 수 있습니까?

답변

2

gdfedit을 사용해보세요. RGtk2Extras에서 dfedit하는 간단한 프런트 엔드입니다. 그렇지 않으면 Rgtk2에이 모델을 충분히 쉽게 만들 수있는 모델이 있습니다. 비교적 간단한 예가 아래와 같습니다.

df <- data.frame(x=rnorm(1e5), y = rnorm(1e5)) 

library(RGtk2) 
model <- rGtkDataFrame(df) 
view <- gtkTreeView(model) 
mapply(view$insertColumnWithAttributes, -1, colnames(model), 
     list(gtkCellRendererText()), 
     text = seq_len(ncol(model)) - 1) 

sw <- gtkScrolledWindow() 
sw$add(view) 

win <- gtkWindow(show=FALSE) 
win$add(sw) 
win$show() 

이렇게하면이 크기 데이터 세트가 매우 빠르게 표시됩니다. 나는 1e6이 아무 문제도 없다고 생각할 것이다. 내가 너를 보내 줄게. 이 예제는 책 의 코드가 R에있는 ProgGUIinR 패키지에서 제공됩니다. 책을 연결하지 않고 할 수있는 다른 일을 찾을 수있는 장소를 제공합니다.

[<-을 통해 모델 자체 (model)에 액세스 할 수 있지만 GUI가 데이터 프레임과 동기화되지 않으며 변경 사항이 반영됩니다.

+0

Rgtk2의 모델 사용법에 대해 자세히 설명해 줄 수 있습니까? –

+0

좋아요, 답을 수정했습니다. – jverzani