2011-11-04 67 views
18

我期待創建一個GUI,它接受來自用戶的一些輸入(例如性別,年齡和種族作爲可點擊的類別),然後爲每個輸入分配一個用戶ID(它將在GUI中顯示爲輸出)。底層是一個數據集,GUI是用這個用戶輸入創建的(在這個例子中,它將是4個變量:用戶ID,性別,年齡和種族)。什麼R包或代碼可以用來構建定製的GUI?

有沒有人創建過這樣的圖形用戶界面?任何R包或代碼建議?

謝謝!

+0

這個問題很可能會在SO上得到很好的答案。 – whuber

+0

基於網頁的GUI如何?有沒有Apache模塊 - 或者你對GUI非常感興趣? – Iterator

+1

對於這個問題,如果你喜歡網絡調查,那裏有一些很好的系統,還有一些很好的R軟件來分析這些標準調查系統的輸出。在你看來,我只是要求澄清你的需求。 – Iterator

回答

12

有很多方法可以做到這一點。這是一個使用附加軟件包gWidgets的軟件。應該使用RGtk2或tcltk後端。

library(gWidgets) 
items <- data.frame(id=numeric(0), gender=character(0), age=numeric(0), race=character(0), stringsAsFactors=FALSE) 
genders <- c("Male", "Female") 
race <- c("Black", "Hispanic", "Other") 

w <- gwindow("Capn's GUI", visible=FALSE) 
g <- ggroup(cont=w, horizontal=FALSE) 
lyt <- glayout(cont=g) 
lyt[1,1] <- "Gender:" 
lyt[1,2] <- gradio(genders, cont=lyt) 

lyt[2,1] <- "Age:" 
lyt[2,2] <- gedit("40", coerce.with=as.numeric, cont=lyt) 

lyt[3,1] <- "Race:" 
lyt[3,2] <- gcombobox(race, selected=0L, cont=lyt) 

lyt[4,2] <- gbutton("Add", cont=lyt, handler=function(h,...) { 
    vals <- lapply(lyt[1:3, 2], svalue) 
    id <- nrow(items) + 1     # or roll your own 
    items[id, ] <<- c(id, vals) 
    tbl[] <- items 
}) 
gseparator(cont=g) 
tbl <- gtable(items, cont=g) 


visible(w) <- TRUE 
7

在RStudio上建立了一個新的解決方案。它在useR2011介紹,這裏是一個鏈接到海報:

http://www.calvin.edu/~rpruim/talks/MosaicLightning/images/mosaicManipulate-poster.pdf

+0

對於非rstudio用戶,您可以使用gWidgetsManipulate與Tal指向的完全相同的方式。這個軟件包目前還沒有啓動,但r-forge,目前:https://r-forge.r-project.org/R/?group_id=761 – jverzani

+0

@jverzani'gWidgetsManipulate'的命運是什麼?被移植到「gWidgets2」嗎?我認爲在CRAN上有一個非RStudio類似操作的程序包會很不錯.. – landroni

+0

這裏有一個例子:https://github.com/jverzani/gWidgets2/blob/master/inst/examples/manipulate.R – jverzani

相關問題