2012-01-25 22 views
3

R有沒有一種方法可以提示用戶(即scanf)獲取信息,還可以使用字符串數組作爲可能的完成方式自動完成該提示?R有自動完成功能的提示用戶

基本上,尋找類似於GNU Readline for R(理想情況下是一個例子)。

+0

如果沒有這樣的事情,我也會對其他方式感興趣的用戶我很容易從長列表中選擇的東西 - 我想打印一個「#索引:「string」列表並讓用戶選擇數字將是最多的......'BASIC' ;-) –

+0

啊,剛剛找到'select.list'作爲'utils'的一部分,它只是我剛剛描述的以上評論 –

+0

凱爾,繼續併發布您的解決方案作爲答案,以防其他人正在尋找此工具。 –

回答

4

函數名稱等的自動完成似乎是運行R的開發環境的一個屬性。因此,與eclipse比較,相比於eclipse,Eclipse GUI在R GUI上的工作方式略有不同。因此,我認爲你可能很難以便攜的方式使用自動完成工作,而沒有大量的駭客問題。

更好的解決方案是創建您自己的GUI,在那裏控制行爲。下面是一個使用gWidgets的例子,下拉列表(aka組合框)的選擇取決於輸入的內容。

library(gWidgetstcltk) # or gWidgetsRGtk2, etc. 
#some choices to complete to 
choices <- c("football", "barometer", "bazooka") 

#sort to make it easier for the user to find one, and 
#prepend with a blank string to type in 
items <- c("", sort(choices)) 

#create a gui 
win <- gwindow() 
drp <- gdroplist(items = items, editable = TRUE, cont = win) 

#When the user types something, update the list of available items 
#to those that begin with what has been typed. 
addHandlerKeystroke(drp, handler = function(h, ...) 
{ 
    regex <- paste("^", svalue(h$obj), sep = "") 
    h$obj[] <- items[grepl(regex, items)] 
}) 

內部的處理程序,h$obj指下拉列表控件,svalue(h$obj)是當前選定的價值和h$obj[]是項集。


中的R GUI(以及可能其它)的自動完成後的一組在utils封裝功能(參見?rcompgen)構建。挖掘這些信息的來源可能有用,但我仍然認爲在檢索用戶輸入時很難使其發揮作用,並且可以在開發環境之間移植。 (雖然我很高興被證明是錯誤的)。

+1

RStudio實現自動完成,並且是開源的,也許OP可以借用它? –