2012-09-05 5 views
0

OS 독립적 인 R 사용자를 위해 파일을로드하는 데모 도구를 만들고 싶습니다. Windows 시스템에서 나는 shell.exec을 사용하지만 이것이 Mac과 Linux에서는 동일하지 않음을 알고 있습니다. 나는 그들이 system을 사용한다고 생각하지만 아무 것도 사용하지 않아도되는 방법을 전혀 모릅니다. shell.exec. 여기에 기능은 지금까지의 :시스템 독립적 인 afile 열기 방법

open_file <- function(file.name) { 
    if (Sys.info()["sysname"] == "Windows") { 
     shell.exec(file.name) 
    } else { 
#insert linux and mac equiv here (I think they're the same)         
    } 
} 

나는 리눅스 및 Mac OS X ... 일부는 그것뿐만 아니라 이러한 시스템에서 작동하도록하기 위해 삽입에 넣을 수있는 무엇?

EDIT : 내 함수 shell.exec에서 docx 일 가능성이있는 파일을 열고 MS Word를 사용하지만이 파일을 일반용으로 열어 txt csv xlsx 파일도 열어두기를 원합니다.

+0

아직 질문하지 않습니다. shell.exec은 무엇을해야합니까? 편집기를 시작 하시겠습니까? 냉장고에서 차가운 것을 꺼내시겠습니까? –

+3

http://svn.r-project.org/R/trunk/src/library/base/man/windows/shell.exec.Rd ... 어쩌면'open' 명령이 MacOS에서 작동할까요? (나는'system (paste ("open", filename))이 작동한다고 생각한다.) http://stackoverflow.com/questions/264395/linux-equivalent-of-the-mac-os-x-open-command도 참조하라. –

+0

@ 피드백에 감사드립니다. 미안 해요 내 생각에 그것은 명확하고 shell.exec 행동을 매우 구체적이고 쉬운 방법으로 생각하고 이것이 맥/리눅스의 경우가 아니라는 느낌을 받고 있습니다. 위의 편집 내용을 참조하십시오. –

답변

1

shell.exec()는 Windows 버전의 R에서는 사용할 수 있지만 MAC 버전에서는 사용할 수없는 기능입니다. 당신은 당신이 원하는 기능을 얻기 위해 다음 코드를 사용할 수 있습니다

shell.exec <- function(x) 
{ 
     # replacement for shell.exe (doesn't exist on MAC) 
     if (exists("shell.exec",where = "package:base")) 
      return(base::shell.exec(x)) 
     comm <- paste("open",x) 
     return(system(comm)) 
} 

`

이의 좋은 점은 접근 방식이 투명하다는 것이다 - 계속 작동합니다 Windows 시스템의 작동 코드, 파일 시스템이 OS가 열리는 방법을 알고있는 한, Mac 시스템에서도 실행됩니다. 이것을 Unix에서도 작동하도록 만드는 것이 간단해야합니다.

+0

나는이 질문을 잊어 버렸지 만, 본질적으로이 작업은 (파일이 아니라 디렉터리가 아니라 대답을위한 것임) : http://stackoverflow.com/a/12135823/1000343 –