2015-11-11 56 views
12

Tôi cần thực hiện công cụ bên ngoài từ R và lỗi xử lý (nếu có) xảy ra trong công cụ đó. Tôi biết 3 chức năng để làm điều gì đó quen thuộc với công việc của tôi:Chức năng hệ thống R luôn trả về lỗi 127

shell, system and system2. 

Thying để kiểm tra những, tôi thấy rằng lệnh

shell("notepad") 

mở notepad. Theo như tôi biết vỏ không cho phép kiểm tra lỗi (không có giao diện để nhìn vào stderr).

Khi tôi gọi

system("notepad") 

hoặc

system2("notepad") 

R đóng băng cố gắng để làm cho những lệnh.

Calling

system("start notepad") 

hoặc

system2("start notepad") 

lợi nhuận cảnh báo

Warning message: 
running command '"start notepad"' had status 127 
+0

Sự cố xảy ra với 'notepad' không nằm trong PATH và do đó không hiển thị với R để thực thi nó. Trên máy tính của tôi, tôi có thể gọi 'hệ thống ("java -version") 'không có rắc rối. Kỳ lạ thay, tôi không thể đưa Notepad ra mắt từ R ngay cả sau khi thêm nó vào PATH của tôi. –

+0

Tôi cũng có thể nhận được 'hệ thống (" phiên bản git ")' để làm việc. Có thể có vấn đề với các chương trình dòng lệnh không trong R. Tại sao bạn muốn khởi chạy Notepad từ R, tôi có thể hỏi? –

+0

> hệ thống ("phiên bản git") Thông báo cảnh báo: lệnh chạy 'git version' có trạng thái 127 – Powerfool

Trả lời

4

Như tôi đã đề cập trong ý kiến ​​của tôi, các tài liệu nghiên cứu cho thấy rằng trong Windows các system() chức năng không khởi động một vỏ riêng biệt (nếu cần). Đây là lý do tại sao dòng lệnh lệnh chạy với system(), nhưng Notepad, mà cần có một cửa sổ riêng biệt, không chạy:

Từ documentation cho system():

Sự khác biệt quan trọng nhất là trên Unix giống nhau hệ thống khởi chạy một trình bao mà sau đó chạy lệnh. Trên Windows lệnh được chạy trực tiếp - sử dụng shell cho giao diện chạy lệnh thông qua một shell (theo mặc định Windows shell cmd.exe, có nhiều khác biệt từ một shell POSIX).

3
system("bash -l", input = "notepad") 
12

Thích ứng @ câu trả lời DavidTseng của (xin lỗi vì không có đủ uy tín để upvote nó) ...

system("cmd.exe", input = "notepad") 

làm việc cho tôi trong Windows.

Các vấn đề liên quan