2010-11-12 67 views

Trả lời

12

Không trực tiếp, nghĩa là không có gói nào mà tôi biết rằng thực hiện một cây cầu.

Bạn luôn có thể gọi các chương trình bên ngoài bằng cách sử dụng system() nhưng không thanh lịch cũng không hiệu quả. Điều đó nói rằng, bạn có thể chuẩn bị dữ liệu trong R, viết nó ra, gọi Stata và sau đó đọc kết quả; xem help(system).

+1

Đây có lẽ là giải pháp tốt nhất. Stata có một bộ công cụ dòng lệnh cho phép bạn chạy tệp .do/.ado từ trình bao (windows: http://www.stata.com/support/faqs/win/batch.html hoặc unix/linux: http://fmwww.bc.edu/Gstat/docs/stataunixlinux.html#batch) –

+2

Hiện có gói [RStata] (https://github.com/lbraglia/RStata) trên GitHub cố gắng tạo cầu nối giữa R và Stata. – Thomas

+0

@Thomas RStata xứng đáng là câu trả lời của riêng nó. – fgregg

3

Vấn đề thực sự là Stata không có thông dịch viên tương tác mà bạn có thể chuyển đối số đến.

Dirk là đúng; bạn chỉ cần tiếp tục và ghi dữ liệu theo định dạng phổ biến (nếu kích thước lớn và tốc độ là vấn đề, chiều rộng cố định an toàn), nhưng bạn cũng có thể sử dụng .dta trong suốt quá trình, sử dụng read.dta trong R và tự nhiên đọc trong Stata.

Ngoài ra, trong R bạn có thể gọi đến hệ thống() bạn có thể chuyển một tệp hoặc một chuỗi chứa một loạt các lệnh Stata.

Vì vậy, nói chung, cố gắng sử dụng Stata cho tác vụ này hoặc tác vụ đó có thể hoặc không đáng giá, đặc biệt nếu tương đương R gần kề.