2017-02-03 114 views
1

我想從內R.如何從R打開文檔?

我可以啓動軟件(GraphPad棱鏡)具有以下打開文件:

system2("C:/Program Files (x86)/GraphPad/Prism 7/prism.exe") 

我預計在打開我的棱鏡文件,好像我是雙擊上或從CMD運行它,但它沒有:

system2("H:/Graphs/Shell/Templates/NASH4_Standard.pzfx") 

我收到的消息:

警告消息:正在運行的命令 「H:/Graphs/Shell/Templates/NASH4_Standard.pzfx」有狀態127

我看,這是不是一個錯誤,但只是一個警告。我是否無意中在背景中「炮轟」文檔?我如何確保它彈出窗口?

狀態127是寫給here,但對於啓動軟件,而不是用它打開文檔。

+1

是'用'prism.exe'應用程序相關聯.pzfx'文件默認?如果不是,則可能需要將'.pzfx'文件作爲參數傳遞給第一個命令。 – nrussell

+0

當我雙擊一個'.pzfx'文件時,它會用'prism.exe'啓動。如果我將'H:/Graphs/Shell/Templates/NASH4_Standard.pzfx「複製到cmd,則相同。這是否意味着它是相關的? – naco

+1

可能; 'edit(file =「path/to/file.pzfx」,editor =「path/to/prism.exe」)'爲你工作嗎? – nrussell

回答

3

在Windows環境中打開文件,你需要調用一個命令行解釋像CMD提示符或PowerShell的。此外,任何具有空格的文件路徑都需要用R中的字符串文本(您的.exe文件不是特定文件)所需的引號之上的雙引號引起來。

隨着system()在一個字符串發送整個命令:

system('cmd /c "H:/Graphs/Shell/Templates/NASH4_Standard.pzfx"') 

# POWER SHELL REQUIRES MORE QUOTE ESCAPING (ONLY ONE PAIR W/O SPACES) 
system('powershell & """H:/Graphs/Shell/Templates/NASH4_Standard.pzfx"""') 

隨着system2()使用ARGS參數:

# FILES 
system2('cmd', args=c('/c', '"H:/Graphs/Shell/Templates/NASH4_Standard.pzfx"')) 
system2('powershell', args=c(' & """H:/Graphs/Shell/Templates/NASH4_Standard.pzfx"""')) 

# EXECUTABLES 
system2('cmd', args=c('/c', '"C:/Program Files (x86)/GraphPad/Prism 7/prism.exe"')) 
system2('powershell', args=c(' & """C:/Program Files (x86)/GraphPad/Prism 7/prism.exe"""')) 
1

shell.exec("C:/Program Files (x86)/GraphPad/Prism 7/prism.exe")

它爲你工作?

ps。和shell.exec("MyWorkbook.xls")默認程序

+1

這也適用 – naco