사용자에게 (즉, scanf) 정보를 요청하고 가능한 문자열로 문자열 배열을 사용하여 해당 프롬프트의 자동 완성을 허용하는 방법이 있습니까?R 자동 완성 기능을 사용하는 프롬프트 사용자
기본적으로 R 용 GNU Readline (예를 들어 이상적으로)과 같은 것을 찾고 있습니다.
사용자에게 (즉, scanf) 정보를 요청하고 가능한 문자열로 문자열 배열을 사용하여 해당 프롬프트의 자동 완성을 허용하는 방법이 있습니까?R 자동 완성 기능을 사용하는 프롬프트 사용자
기본적으로 R 용 GNU Readline (예를 들어 이상적으로)과 같은 것을 찾고 있습니다.
함수 이름에 대한 자동 완성은 R을 실행하는 개발 환경의 속성 인 것으로 보입니다. R GUI에서 Eclipse와 약간 다른 방식으로 작동합니다.
그렇기 때문에 상당한 해커가없는 scanf
/readline
에 대한 자동 완성 작업을 수행하는 데 어려움을 겪을 수 있습니다.
더 나은 해결책은 동작을 제어하는 고유 한 GUI를 만드는 것입니다. 다음은 gWidgets
을 사용하는 예제입니다. 드롭 다운 목록 (일명 콤보 박스)은 입력 내용에 따라 선택이 줄어 듭니다. 그 처리기 내부
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
참조)의 세트에 내장되어 있습니다. 소스를 파헤쳐 보면 유용 할 수 있지만 개발 환경 사이에서 이식 가능한 방식으로 사용자 입력을 검색하는 동안 작동시키지 못할 것이라고 생각합니다. (비록 내가 틀렸다는 것이 기꺼이 증명 될 것입니다.)
RStudio는 자동 완성 기능을 구현하고 있으며 오픈 소스입니다. 아마도 OP가 빌릴 수 있습니까? –
이와 같은 것이 없다면 다른 목록에있는 것들을 쉽게 선택할 수있는 다른 방법에도 관심이 있습니다. "# index : "문자열"목록과 사용자가 숫자를 선택하게하는 것은 가장 ... "BASIC' ;-) –
아, 방금 설명한 내용을 수행하는'utils'의 일부로'select.list'를 찾았습니다. –
카일, 다른 사람들이이 도구를 찾고있는 경우에 대비하여 솔루션을 답으로 게시하십시오. –