Có công cụ nào (trình soạn thảo, tập lệnh, bất kỳ thứ gì ...) có sẵn có thể tự động định dạng lại mã R không? Nó không cần phải được tùy chỉnh nhưng nó phải có khả năng nhận ra các câu lệnh được phân tách bằng dấu chấm phẩy hoặc dòng mới vì mã này có cả hai. Nếu nó có thể đặt tất cả các tuyên bố trên một dòng riêng biệt, nhất quán khối mã thụt lề và liên tục đặt niềng răng, tôi sẽ rất hạnh phúc.để tự động định dạng mã R
Edit: tóm tắt những phát hiện
Cảm ơn câu trả lời tuyệt vời. Đây là những gì tôi đã tìm thấy.
- Cả ESS và Statet đều là trình chỉnh sửa R tuyệt vời và thực hiện tốt công việc tự động chặn các khối mã. Statet cho phép bạn chọn tất cả và thụt lề lại mọi thứ trong một tệp cùng một lúc. Từ những gì tôi có thể cho biết ESS cho phép bạn thụt lề toàn bộ chức năng def cùng một lúc nhưng không phải toàn bộ tập tin (hãy sửa tôi nếu tôi bỏ lỡ nó). Không ai trong số này sẽ sửa chữa vị trí cú đúp hoặc phá vỡ các dòng đa tuyên bố. (Ví dụ: i = n * b; a = i + 1)
- định dạngR thật tuyệt vời. Ngoài việc sửa chữa thụt đầu dòng, nó cũng sẽ đặt niềng răng nhất quán và phân chia các dòng đa tuyên bố.
Dưới đây là một chức năng nhỏ mà tôi đã viết để tôi có thể chuyển đổi toàn bộ thư mục nguồn (sử dụng cùng chức năng cơ bản như định dạngR, điều lạ lùng trong gói hoạt ảnh).
library("animation")
tidy.all <- function(inDir = NULL, outDir = NULL, ...) {
if (is.null(inDir) || is.na(outDir))
stop("inDir can't be null or NA")
if (!file.info(inDir)$isdir)
stop("inDir must be a directory")
if (is.null(outDir) || is.na(outDir))
stop("outDir can't be null or NA")
if (!file.exists(outDir))
dir.create(outDir)
if (!file.info(outDir)$isdir)
stop("outDir must be a directory")
for (f in dir(inDir)) {
currFile <- file.path(inDir, f)
if (length(grep(".*\\.R$", currFile, perl = T))) {
outFile <- file.path(outDir, f)
if (file.exists(outFile))
stop(paste("refusing to overwrite", outFile))
tidy.source(currFile, file = outFile, ...)
}
}
}
Tôi viết "mã đẹp" ngay từ đầu vì tôi thấy dễ đọc hơn. Tôi sử dụng plugin StatET cho Eclipse (tôi đã thử ESS nhưng tôi thấy nó có thể so sánh với Statet), điều này hoàn toàn thỏa đáng cho công việc của tôi. –
@romunov có, tôi đồng ý nhưng hầu hết mã R mà tôi phải sửa đổi ban đầu không được tạo bởi tôi – Keith
Keith, điểm tốt. Trong trường hợp đó, tôi tìm định dạng giống như một tùy chọn tuyệt vời (như bạn đã khám phá ra). –