2010-11-09 62 views
64

Tôi đã tìm thấy điều này old thread (từ hơn một năm trước), điều này giải thích cách R không hỗ trợ nhận xét nhiều dòng (ví dụ như/* comment */của PHP).Có thể có nhận xét nhiều dòng trong R không?

Tôi tự hỏi nếu điều này đã được giải quyết trong năm qua, hoặc nếu có lựa chọn thay thế khác? (Ví dụ: trong notepad ++ với npptor, bạn có thể đánh dấu một loạt các dòng và nhấn ctrl + q để đánh dấu tất cả chúng là các nhận xét, có các giải pháp tương tự cho các IDE khác không?)

+0

thật tuyệt vời khi có nhận xét nhiều dòng và cũng có nhận xét lồng nhau hoặc một số nhận xét phân cấp. Bằng cách đó nó coukld được gấp tốt hơn. – skan

+0

Trong RStudio bạn chỉ có thể bắt đầu bình luận của bạn với ** '# '' ** và các dòng sau sẽ được tự động nhận xét. –

Trả lời

36

Bạn có thể, nếu bạn muốn, hãy sử dụng các chuỗi độc lập cho các nhận xét nhiều dòng — Tôi luôn nghĩ rằng các khung hình đẹp hơn các khối if (FALSE) { }. Chuỗi sẽ được đánh giá và sau đó bị loại bỏ, miễn là nó không phải là dòng cuối cùng trong một hàm, không có gì sẽ xảy ra.

"This function takes a value x, and does things and returns things that 
take several lines to explain" 
doEverythingOften <- function(x) { 
    # Non! Comment it out! We'll just do it once for now. 
    "if (x %in% 1:9) { 
      doTenEverythings() 
    }" 
    doEverythingOnce() 
    ... 
    return(list(
     everythingDone = TRUE, 
     howOftenDone = 1 
    )) 
} 

Giới hạn chính là khi bạn nhận xét nội dung, bạn phải xem dấu ngoặc kép: nếu bạn có một loại bên trong, bạn sẽ phải sử dụng loại khác cho bình luận; và nếu bạn đã có một cái gì đó như "chuỗi với 'postrophes" bên trong khối đó, sau đó không có cách nào phương pháp này là một ý tưởng tốt. Nhưng sau đó vẫn còn khối if (FALSE).

Giới hạn khác, mà cả hai phương pháp đều có, là bạn chỉ có thể sử dụng các khối như vậy ở những nơi mà một biểu thức sẽ có hiệu lực về cú pháp - không có chú thích trong các phần của danh sách.

Về những gì mà IDE: Tôi là người dùng Vim và tôi tìm thấy NERD Commenter một công cụ hoàn toàn tuyệt vời để nhanh chóng nhận xét hoặc bỏ ghi chú nhiều dòng. Rất thân thiện với người dùng, được ghi chép rất tốt.

Cuối cùng, tại dấu nhắc R (ít nhất là dưới Linux), có đáng yêu Alt - phím Shift - # nhận xét dòng hiện tại. Rất tốt để đặt một dòng 'giữ', nếu bạn đang làm việc trên một lót và sau đó nhận ra bạn cần một bước chuẩn bị đầu tiên.

+0

Xin chào Esteis - liên quan đến alt-shift- #, nó không hoạt động trên các cửa sổ. Tôi sử dụng "Esc", và tôi nghĩ nó hoạt động theo cách tương tự với những gì bạn mô tả. Cảm ơn tất cả những lời đề nghị. –

+0

Trên Linux, chức năng chèn nhận xét như vậy có thể do thư viện GNU 'readline'. Nếu nó làm việc cho bạn trong R, nó có thể sẽ làm việc cho bạn trong nhiều ứng dụng khác, chẳng hạn như 'bash'. –

9

Không có nhận xét nhiều dòng trong R phiên bản 2.12 và không thay đổi. Trong hầu hết các môi trường, bạn có thể nhận xét các khối bằng cách làm nổi bật và chuyển đổi nhận xét. Trong emacs, đây là 'M-x;'.

16

CTRL +SHIFT +C trong Eclipse + StatET và Rstudio.

+0

Phím tắt này cũng hoạt động trong RStudio (3.4.1, Mac). – hsl

+0

@hsl cảm ơn, đã thêm câu trả lời này vào câu trả lời của tôi. –

8
if(FALSE) { 
... 
} 

ngăn cản nhiều dòng được thực thi. Tuy nhiên, những dòng này vẫn phải có cú pháp chính xác, tức là, không thể là nhận xét theo nghĩa thích hợp. Vẫn còn hữu ích cho một số trường hợp mặc dù.

+0

Đây là chương trình bình luận đa cấp của tôi về sự lựa chọn. – Greg

+0

cảm ơn @caracal, rất hữu ích nếu bạn muốn bỏ qua toàn bộ khối mã trong khi cực kỳ đơn giản để nhận xét nếu bạn muốn xử lý cùng một khối thời gian khác '# if (FALSE) {' và '#}' – Gabriel123

4

Thật không may, vẫn không có nhiều dòng bình luận trong R.

Nếu soạn thảo văn bản của bạn hỗ trợ cột-mode, sau đó sử dụng nó để thêm một loạt cáC# s cùng một lúc. Nếu bạn sử dụng UltraEdit, Alt + c sẽ đưa bạn vào chế độ cột.

+0

UltraEdit cũng có lệnh Thêm nhận xét trên menu Chỉnh sửa: Alt + e, n –

2

Đặt đoạn mã sau vào ~/.Rprofile tập tin của bạn:

exclude <- function(blah) { 
    "excluded block" 
} 

Bây giờ, bạn có thể loại trừ các khối như sau:

stuffiwant 

exclude({ 
    stuffidontwant 
    morestuffidontwant 
}) 
72

R Studio (và Eclipse + StatET): Đánh dấu văn bản và sử dụng CTRL + SHIFT + C để nhận xét nhiều dòng trong Windows. Hoặc, lệnh + SHIFT + C trong OS-X.

+2

Trong trường hợp trùng lặp, vui lòng không đăng cùng một câu trả lời nhiều lần. –

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