R의 "열린 파일"유형 기능을 알고있는 R 사용자가 있습니까? 는 바람직하게는 텍스트 인터페이스, 예컨대 :R 명령 줄 파일 대화 상자? file.choose와 비슷합니다.
> file.choose("/path/to/start/at")
path/to/start/at:
[1] [D] a_directory
[2] [D] another_directory
[3] [F] apicture.tif
[4] [F] atextfile.txt
...
[..] Go up a directory
Enter selection:
이있을 것이다 그리고 난 내가 원하는 파일을 선택할 때까지를 통해 검색 할 수있을 것입니다.
I 현재 file.choose
알고 있지만, 단지 말한다 (어쨌든 리눅스) 오전 "파일 이름을 입력 :"당신이 입력 어떤 필요하지만 당신이 검색 할 수있는 기능을 제공하지 않습니다. (아마도 Windows에서는 "파일 열기"대화 상자가 나타납니다).
나는 열린 파일 대화 상자를 사용하기 쉽지만 RGtk2/tcltk/etc와 같은 GUI 패키지를로드하는 것을 선호합니다.
나는 또한 위의 텍스트 브라우저를 직접 작성할 수는 있지만 휠을 다시 만들려고 시도하기 전에 누군가가 그런 기능을 알고 있는지 물어볼 것입니다. (작동하기 전에 여러 번 잘못 입력하십시오.)
건배.
업데이트
답변은 텍스트 기반 인터페이스에서 "아니오"입니다. 그러나 @Iterator에 의해 @의 TylerRinker의 솔루션과 의견에 따라, 나는 그것을 할 내 자신의 기능을 썼다 (그리고 내가 그들 덕분에 생각했던 것보다 훨씬 쉽게했다!) :
편집-multiple=F
같은 보통 사람들에게 수정 된 기본 하나의 파일을 선택하려고합니다.
#' Text-based interactive file selection.
#'@param root the root directory to explore
#' (default current working directory)
#'@param multiple boolean specifying whether to allow
#' multiple files to be selected
#'@return character vector of selected files.
#'@examples
#'fileList <- my.file.browse()
my.file.browse <- function (root=getwd(), multiple=F) {
# .. and list.files(root)
x <- c(dirname(normalizePath(root)), list.files(root,full.names=T))
isdir <- file.info(x)$isdir
obj <- sort(isdir,index.return=T,decreasing=T)
isdir <- obj$x
x <- x[obj$ix]
lbls <- sprintf('%s%s',basename(x),ifelse(isdir,'/',''))
lbls[1] <- sprintf('../ (%s)', basename(x[1]))
files <- c()
sel = -1
while (TRUE) {
sel <- menu(lbls,title=sprintf('Select file(s) (0 to quit) in folder %s:',root))
if (sel == 0)
break
if (isdir[sel]) {
# directory, browse further
files <- c(files, my.file.browse(x[sel], multiple))
break
} else {
# file, add to list
files <- c(files,x[sel])
if (!multiple)
break
# remove selected file from choices
lbls <- lbls[-sel]
x <- x[-sel]
isdir <- isdir[-sel]
}
}
return(files)
}
그것은 심볼릭 링크와 함께 발프 수있는 '..'내가 normalizePath
을 사용하기 때문에 ..하지만 오 잘.
Windows 및 Mac에서는 사용자가 묻는 GUI 유형 브라우저를 제공합니다. 나는 리눅스에서 file.choose를 처음 사용하는 것을 기억한다 ... 나는 쓸모가 없다고 생각하고 어떤 종류의 브라우저를 원했다! – Dason
필자는 개인적으로 file.choose를 신경 쓸 필요는 없지만 일부 공동 작업자에게이 코드를 제공하고 있습니다. 입력하는 경로에 따라 오타가 생기기 쉽기 때문에 기존 파일을 선택할 수있는 무언가가 필요했습니다. . –
shell.exec와 결합하면 (나는 대부분 윈도우 사용자이기 때문에 다른 OS에 상응하는 명령이 무엇인지 잘 모름) 이것은 꽤 좋다. 수학 커피를 공유해 주셔서 감사합니다.'shell.exec (my.file.browse())'또는'shell.exec (my.file.browse (root = path.expand ("~")))' –