Rất tiện lợi khi có các tập lệnh R để thực hiện các âm mưu đơn giản từ dòng lệnh. Tuy nhiên, chạy R từ các tập lệnh bash không thuận tiện chút nào. Lý tưởng có thể là một cái gì đó giống như
#!/path/to/R
...
hoặc là
#!/usr/bin/env R
...
nhưng tôi đã không thể làm cho một trong hai công việc đó.
Một lựa chọn khác là giữ các tập lệnh hoàn toàn ở dạng R, ví dụ script.R
, và gọi nó bằng R --file=script.R
hoặc tương tự. Tuy nhiên, đôi khi một tập lệnh sẽ dựa vào các công tắc dòng lệnh khó hiểu tại thời điểm đó một phần của mã tồn tại bên ngoài tập lệnh. Ví dụ: lén đưa mọi thứ vào R từ bash thông qua một tệp .Rprofile cục bộ, các công tắc mong muốn sau đó đều --vanilla
ngụ ý ngoại trừ --no-init-file
.
Một tùy chọn khác là một tập lệnh bash để lưu trữ các cờ R và có thể thực thi dễ dàng, sau đó gọi là tập lệnh R. Vấn đề là điều này có nghĩa là một chương trình đơn lẻ chỉ được tách thành hai tệp mà bây giờ phải được đồng bộ hóa, chuyển sang các máy mới cùng nhau, v.v.
Tùy chọn mà tôi hiện không coi thường nhất là nhúng R vào một tập lệnh bash:
#!/bin/bash
... # usage message to catch bad input without invoking R
... # any bash pre-processing of input
... # etc
R --random-flags <<RSCRIPT
# R code goes here
RSCRIPT
Mọi thứ đều nằm trong một tệp duy nhất. Nó có thể thực thi và dễ dàng xử lý các đối số. Vấn đề là việc kết hợp bash và R như thế này khá nhiều loại trừ khả năng bất kỳ IDE nào không bị lỗi ở cái này hay cái khác, và khiến trái tim tôi đau thật.
Có cách nào tốt hơn tôi đang thiếu không?