2012-02-02 21 views
45

Possible Duplicate:
R: Multiline Comment Workarounds?R: Cảm nhận ra khối mã

Tôi muốn nhận xét ra một vài dòng mã trong R. Có cách nào để làm việc đó mà không cần phải đặt một # trước mỗi dòng - loại giống như /* blocked out code */ trong SAS ?

+0

R không thực hiện nhận xét nhiều dòng. Xem chủ đề tương tự: http://stackoverflow.com/questions/4131338/is-it-possible-to-have-a-multi-line-comments-in-r – Maiasaura

+0

Đề xuất tốt nhất của tôi là viết macro (hoặc plugin trong trường hợp bạn sử dụng một cái gì đó như Sublime Text 2) và gán một keybinding như vậy mà văn bản được lựa chọn (tức là ý kiến) có được một # ở phía trước một khi bạn nhấn các ràng buộc phím thích hợp. – Maiasaura

+0

Đó là một ý tưởng. R tệ quá, không làm điều đó một cách tự nhiên. Cảm ơn, Maiasaura. – user702432

Trả lời

26

Hầu hết các trình chỉnh sửa đều thực hiện một số loại phím tắt để nhận xét các khối mã. Các biên tập viên mặc định sử dụng một cái gì đó như lệnh hoặc điều khiển và trích dẫn đơn để bình luận ra các dòng mã đã chọn. Trong RStudio đó là lệnh hoặc điều khiển '/'. Kiểm tra trong trình soạn thảo của bạn.

Nó vẫn đang bình luận từng dòng, nhưng họ cũng bỏ ghi chú các dòng được chọn. Đối với Mac RGUI đó là tùy chọn lệnh '(Tôi đang tưởng tượng các cửa sổ là tùy chọn điều khiển). Đối với Rstudio nó chỉ là lệnh hoặc điều khiển + shift + C một lần nữa.

+3

Vâng, đây là một tính năng siêu tiện dụng. Trong Emacs, chỉ cần đánh dấu khu vực được nhận xét, và gõ 'C-x r t' theo sau bởi các ký tự bạn muốn thêm (giống như' "##" '). Để thụt lề khối mã cho SO, hãy làm điều tương tự, nhưng thay thế ba ký tự cuối cùng bằng bốn dấu cách! –

+2

Trong Emacs bạn cũng có thể sử dụng 'M-x comment-region'. Không biết về 'C-x r', cảm ơn! –

+16

CTRL + SHIFT + C chuyển đổi nhận xét về lựa chọn theo nhật thực/Statet. –

35

Một loại khối bình luận sử dụng một câu lệnh if:

if(FALSE) { 
    all your code 
} 

Nó hoạt động, nhưng tôi hầu như luôn luôn sử dụng các tùy chọn khối bình luận của biên tập viên của tôi (RStudio, Kate, Kwrite).

19

Wrap nó trong một chức năng không sử dụng:

.f = function() { 

## unwanted code here: 

} 
1

tôi sử dụng RStudio hoặc Emacs và luôn luôn sử dụng các phím tắt trình soạn sẵn để bình luận khu vực. Nếu đây không phải là một khả năng thì bạn có thể sử dụng câu trả lời của Paul nhưng điều này chỉ hoạt động nếu mã của bạn có cú pháp chính xác.

Đây là một cách bẩn khác mà tôi đã đưa ra, bọc nó trong scan() và xóa kết quả. Nó lưu trữ nhận xét trong bộ nhớ trong một thời gian ngắn vì vậy nó có thể sẽ không hoạt động với các nhận xét rất lớn. Tốt nhất là chỉ cần đặt # dấu hiệu ở trước mỗi dòng (có thể với các phím tắt của trình chỉnh sửa).

foo <- scan(what="character") 
These are comments 
These are still comments 
Can also be code: 
x <- 1:10 
One line must be blank 

rm(foo) 
+2

Biến thể bẩn hơn. Xác định '" # "<- function() invisible (scan (what = character()))' sau đó bắt đầu khối bình luận của bạn với '" # "()'. –

+0

Câu trả lời trước đó thực sự có backticks chứ không phải là dấu ngoặc kép (mặc dù nó hoạt động trong cả hai trường hợp), nhưng tôi sẽ darned nếu tôi có thể tìm ra cách để có được backticks vào một khối mã bên trong một bình luận. –

+0

Richie, gợi ý hay, nhưng dấu gạch chéo sẽ tạo ra thông báo lỗi: Lỗi: không mong muốn '/' trong: "' # '(# bắt đầu nhận xét http: /" – PatrickT

0

tôi đã xử lý với điều này tại talkstats.com trong bài 94, 101 & 103 được tìm thấy trong các chủ đề: Share Your Code. Như những người khác đã nói Rstudio có thể là một cách tốt hơn để đi. Tôi lưu trữ các chức năng này trong .Rprofile của tôi và thực sự sử dụng chúng một cách tự động để chặn các dòng mã một cách nhanh chóng.

Không hoàn toàn đẹp như bạn mong đợi nhưng có thể là một cách tiếp cận.

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