2017-02-03 17 views
1

Я хочу, чтобы открыть файл из внутри R.Как открыть документ из R?

Я могу запустить программное обеспечение (GraphPad Prism) со следующим:

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

Я ожидал, чтобы открыть мой файл призма, как если бы я был двойной щелчок на нем или запустить его из ЦМД, но это не так:

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

Я получаю сообщение:

Предупреждение сообщение: запуск команды «H: /Graphs/Shell/Templates/NASH4_Standard.pzfx» имел статус 127

Я вижу, что это не ошибка, а просто предупреждение. Неужели я непреднамеренно «обстреливал» документ в фоновом режиме? Как я могу убедиться, что он появляется в виде окна?

Статус 127 был адресован here, но для запуска программного обеспечения, не открывая документ вместе с ним.

+1

ли '.pzfx' файлы, связанные с' prism.exe' приложения по умолчанию? Если нет, вам может потребоваться передать файл '.pzfx' в качестве аргумента для первой команды. – nrussell

+0

Когда я дважды щелкаю файл '.pzfx', он запускается с помощью' prism.exe'. То же самое, если я скопирую '" H: /Graphs/Shell/Templates/NASH4_Standard.pzfx "' в cmd. Означает ли это, что это связано? – naco

+1

Возможно; does 'edit (file =" path/to/file.pzfx ", editor =" путь/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")

это работает для вас?

пс. и shell.exec("MyWorkbook.xls") открыть файл с программой по умолчанию

+1

Это также работает – naco