2012-05-21 27 views
5

tôi biết để chạy một kịch bản shell trong R đang sử dụng hệ thống chỉ huy:Làm thế nào để chạy kịch bản shell trong R và nhận được đầu ra vào bảng?

my.table <- system(command,intern=TRUE) 

Tuy nhiên, nếu kết quả của "lệnh" của tôi là để in ra một bảng, và tôi muốn R để đọc các bảng trực tiếp vào cấu trúc dữ liệu của riêng nó. (một cái gì đó giống như khung dữ liệu) Có cách nào dễ dàng để làm điều đó không? Bởi vì đầu ra hiện tại trong "bảng" là một bảng chuỗi ký tự. Điều tôi muốn là đối tượng R là read.table().

+0

tôi nghi ngờ bạn sẽ phải làm một số văn bản phân tích chính mình. Một vài gợi ý không được yêu cầu: 1) Phép gán '->' là đúng về mặt kỹ thuật, nhưng phải tránh. 2) Vui lòng đăng câu hỏi có thể tái sản xuất (http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example) vì bạn sẽ nhận được câu trả lời tốt hơn. Trong trường hợp này, bạn chắc chắn sẽ muốn đăng một số đầu ra mẫu. –

+0

"Việc -> chuyển nhượng là kỹ thuật chính xác, nhưng phải tránh" Cái gì? – Hansi

Trả lời

4

Nếu kết quả 'bảng' có dải phân cách trắng-không gian và vận chuyển-lợi nhuận để đánh dấu dòng, sau đó bạn phải vượt qua các kết quả cho 'text' đối số của read.table:

inp.tbl <- read.table(text = system(command,intern=TRUE)) 
+0

cảm ơn rất nhiều! Nó giải quyết vấn đề của tôi !! – Pengyao

+0

(Thông báo trước cho người dùng các phiên bản trước của R: Đối số 'văn bản' đối với 'read.table' và các dẫn xuất của chúng là một bổ sung tương đối gần đây.) –

4

Tôi hy vọng sử dụng pipe sẽ hiệu quả hơn trong bộ nhớ và thời gian hơn system với intern

inp.tbl <- read.table(pipe(command)) 
Các vấn đề liên quan