2010-08-08 31 views

Trả lời

32

Có ba gói trên Cran:

  • getopt: Hành vi getopt C-like
  • optparse: một phân tích cú pháp dòng lệnh lấy cảm hứng từ Python của optparse thư viện
  • argparse: một dòng lệnh tùy chọn và trình phân tích đối số vị trí (lấy cảm hứng từ thư viện argparse của Python). Gói này yêu cầu phải cài đặt trình thông dịch Python với các mô-đun argparsejson (hoặc simplejson).

Cập nhật:

  • docopt: cho phép bạn định nghĩa một giao diện dòng lệnh bằng cách chỉ cho nó một mô tả trong các định dạng cụ thể. Đó là một cổng .
  • argparser: trình phân tích đối số dòng lệnh đa nền tảng được viết hoàn toàn bằng R không có phụ thuộc bên ngoài. Gói này rất hữu dụng với front-end Rscript và tạo điều kiện chuyển một kịch bản lệnh R thành một tập lệnh thực thi.
  • minimist: Gắn kết với thư viện JavaScript tối thiểu. Mô-đun này thực hiện sự can đảm của trình phân tích đối số của người lạc quan mà không có tất cả các trang trí huyền ảo (không có phụ thuộc bên ngoài)
  • optigrab: tùy chọn phân tích cú pháp từ dòng lệnh sử dụng cú pháp đơn giản, rõ ràng. Nó yêu cầu ít hoặc không có đặc điểm kỹ thuật và hỗ trợ các tùy chọn ngắn và dài, cú pháp kiểu GNU, Java hoặc Microsoft, các lệnh động từ và nhiều hơn nữa.
+3

Vì lý do nào đó, 'argparse' thực sự * yêu cầu * Python. Làm cho tôi thử 'optparse' trước tiên ... – krlmlr

+4

lời khuyên không được yêu cầu - như hấp dẫn vì sử dụng gói python argparse nổi bật từ bên trong R, sự phụ thuộc ngôn ngữ chéo chỉ làm cho tập lệnh R của bạn phức tạp và mong manh hơn nhiều. Đừng làm thế. Sử dụng một trong các tùy chọn thuần túy-R được mô tả ở trên. –

25

Cách đơn giản nhất là sử dụng commandArgs(). Ví dụ - lưu mã bên dưới là "tùy chọn.R":

options <- commandArgs(trailingOnly = TRUE) 
options 

Chạy bằng "tùy chọn Rscript.R x y z". Kết quả:

[1] "x" "y" "z" 

ví dụ một danh sách của 3 yếu tố, mỗi đối số.

+7

Điều này không giống với phân tích cú pháp tùy chọn 'getopt'. –

+0

Xin lưu ý tôi đã trả lời điều này gần 7 năm trước; có chắc chắn là một cách tốt hơn bây giờ :) – neilfws

11

Chỉ cần để bổ sung cho câu trả lời Rscript:

[email protected]:~$ r -e 'print(argv)' flim flam flom 
[1] "flim" "flam" "flom" 
[email protected]:~$ 

Chúng tôi chỉ sử dụng argv trong littler. Tôi đã may mắn với getopt, cũ hơn trong hai gói phân tích cú pháp có sẵn.

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