2011-10-28 57 views
9

Tôi biết có tồn tại một mô-đun (rpy và rpy2) để chuyển đổi mã R sang Python.Chuyển đổi Python sang R

Có cách nào dễ dàng để làm ngược lại không?

+1

Gói rJython trên CRAN và gói rPython trên R-Forge cho phép người dùng gọi mã Jython và mã Python từ R. Gói rSymPy trên CRAN sử dụng rJython (và, trên thực tế, rJython trước đây là một phần của rSymPy và kể từ đó tính ra gói riêng của nó). –

Trả lời

13

rpy (2) không chuyển đổi mã. Nó chỉ cho phép bạn một giao diện để giao tiếp với R từ python và đưa ra các lệnh R từ bên trong python.

Cho rằng R rất phụ thuộc vào các thư viện thống kê không có sẵn trong python, chuyển đổi nói chung sẽ là một số lượng lớn công việc. Để chuyển đổi một dòng đơn lẻ như

lmer (y ~ x1 + x1 + (1|id), mydat) 

vào thứ gì đó trong python sẽ tốn nhiều công sức. Nếu bạn chỉ muốn chạy mã đó từ việc sử dụng python rpy. Theo cách khác, dường như bạn quan tâm nhiều hơn, chuyển đổi thường có thể đơn giản hơn một chút. Tuy nhiên, mã sẽ có xu hướng được tối ưu hóa rất kém cho R và chạy rất nặng. Gần đây tôi đã tối ưu hóa một số mã R được chuyển đổi từ python bởi một người đã viết mã R dưới dạng một dòng dịch trực tiếp nhiều hơn hoặc ít hơn. Việc tối ưu hóa xuất hiện 1/3 chiều dài và nhanh hơn từ 20 đến 1000 lần (tùy thuộc vào chức năng).

+0

Mã R 'lmer (y ~ x1 + x1 + (1 | id), mydat) 'làm gì? Tôi tự hỏi liệu đây có phải là loại nhiệm vụ mà NumPy/SciPy có thể làm tốt hay không. – EOL

+1

Xem nhanh hướng dẫn sử dụng NumPy/SciPy cho thấy sự hỗ trợ số liệu thống kê của họ khá cơ bản ... 'lmer' (trong gói' lme4' dành cho các mô hình hỗn hợp tuyến tính, là một vấn đề tính toán không tầm thường ...) –

4

John là chính xác. Đây không phải là chuyển đổi giữa các ngôn ngữ, nhưng giao tiếp ngôn ngữ. Chuyển đổi ngôn ngữ không phải là đặc biệt phổ biến, mặc dù interfacing chúng là. Tuy nhiên, đối tượng chuyển đổi là khá phổ biến, vì đó là một phần quan trọng của giao tiếp ngôn ngữ.

Ngoài Rpy và Rpy2, hãy xem RSPython. Nó cũng cung cấp cho việc chuyển đổi đối tượng và lấy cảm hứng từ Rpy.

4

Nếu có Python là điểm bắt đầu được chấp nhận, rpy2 cho phép bạn đi cả hai cách giữa R và Python: bạn có thể gọi mã Python trong khi thực thi mã R (doc here).

1

với PypeR bạn có thể đi cả hai cách rất dễ dàng: từ R để Python và từ Python để R. http://www.webarray.org/softwares/PypeR/

nó hoạt động tuyệt vời và bài viết này mô tả cách thức hoạt động và lợi thế hơn các lựa chọn thay thế (rpy, rpy2 vv)

http://www.jstatsoft.org/v35/c02/paper

cá nhân tôi sử dụng nó để chạy mô hình stat trong R từ trăn, và nhập khẩu dataframes/xuất khẩu từ một cách để người kia (và chuyển đổi khung numPy vào r-dataframes và ngược lại).

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