Một số tài liệu tham khảo / lời khuyên tốt cho việc học Emacs Nói số liệu thống kê (với R) là gì?


9

Tôi đã sử dụng R được vài năm, nhưng tôi luôn sử dụng GUI như Tinn-R, JGR và gần đây nhất là R-Studio.

Mặc dù tôi thích giao diện của R-Studio, tôi cảm thấy rằng đối với các chương trình dài hơn với ít / không có đồ họa, tôi có thể mã hóa hiệu quả hơn bằng cách tận dụng các phím tắt được cung cấp bởi trình soạn thảo văn bản cơ bản hơn như Emacs.

Tôi đã cài đặt Emacs và plugin ESS, mọi thứ đều hoạt động bình thường và tôi đã thử nghiệm một số mã, nhưng tôi gặp khó khăn khi làm quen với nó và tôi không tìm thấy hướng dẫn tham khảo phù hợp.

Các tìm kiếm của Google trả về một số trang web rất cũ với các hướng dẫn tập trung chủ yếu vào việc cài đặt và định cấu hình các plugin và hướng dẫn sử dụng trên trang web chính thức là quá dày đặc đối với tôi.

Tôi đang tìm kiếm một giới thiệu tương đối ngắn gọn, (lý tưởng nhất là với ảnh chụp màn hình và danh sách các phím nóng) được thiết kế cho một người quen thuộc với R, nhưng không phải là Emacs.

Bất kỳ tài liệu tham khảo hoặc lời khuyên nào khác về việc bắt đầu sẽ được đánh giá rất cao.

Câu trả lời:


11

Trước tiên, bạn sẽ cần phải học cách vận hành văn bản cơ bản với emacs. Vì emacs rất tinh vi tìm ra cách đơn giản để chọn văn bản và sao chép có thể là một thách thức. Vì vậy, hãy đầu tư một chút thời gian để tìm hiểu làm thế nào để làm điều đó một cách hiệu quả. Đọc hướng dẫn có thể giúp đỡ. Đối với Mac OS X sử dụng Aquamacs, nó hỗ trợ các phím tắt riêng.

Làm việc với ESS không khác với làm việc với R. Các quy tắc tương tự để tổ chức mã nên được áp dụng. Trong trường hợp của tôi, mỗi dự án đều có thư mục riêng, nằm trong thư mục mẹ có tên R, nằm trong thư mục chính của tôi (Đối với Windows, tôi khuyên bạn nên trỏ thư mục chính của emacs vào thư mục chứa tất cả nguồn của bạn). Vì vậy, khi tôi sử dụng ESS để làm việc với dự án, tôi luôn luôn làm M-x Rvà chọn thư mục bắt đầu thư mục dự án của tôi.

Sau khi bắt đầu quá trình R, tôi thường chia emacs trong hai cửa sổ (thuật ngữ emacs). Sau đó, bên trái tôi có một mã nguồn, mà tôi gửi cho quá trình R ở bên phải. Các phím tắt có liên quan (đây là các phím tắt emacs) C-x 3để chia dọc các cửa sổ, C-x 1để làm cho bộ đệm hiện tại trở thành cửa sổ duy nhất và C-x 2để chia các cửa sổ theo chiều ngang.

Khi gửi mã đến R, tôi giữ sự phân biệt giữa các hàm và các câu lệnh R. Tôi làm điều này bằng cách giữ tất cả các chức năng của tôi trong một tệp thường được gọi 10code.R. Sau đó, tôi chỉ có thể tải tệp này bằng cách sử dụng tùy chọn tải tệp ESS (phím tắt C-c C-l). Ưu điểm của phương pháp này là nó cung cấp tất cả các hàm và không tạo ra gì trong bộ đệm R. Nếu có lỗi trong mã của bạn thì ESS sẽ hiển thị một thông báo trong bộ thu nhỏ và bạn có thể điều tra nó bằng cách nhấn C-c`.

Mã khác là các câu lệnh R, mà tôi cố gắng tự giải thích: tải dữ liệu, dữ liệu sạch, mô hình thống kê phù hợp, kiểm tra kết quả, đưa ra kết quả cuối cùng. Mã nguồn cho các báo cáo này là trạng thái hiện tại của dự án. Ý định là sau khi dự án kết thúc, tìm nguồn cung cấp các tệp với mã này, sao chép dự án (tôi cũng sử dụng git để theo dõi lịch sử). Khi làm việc với tệp này, tôi thường chỉ làm việc với một câu lệnh R mà tôi gửi cho quy trình R thông qua chức năng eval, đoạn văn, lệnh lệnh đó là phím tắt nào C-c C-c. Lệnh này gửi đến R xử lý đoạn văn, tức là văn bản được phân định bởi các dòng mới. Điều này rất tiện lợi, vì bạn có thể nhóm các câu lệnh R thành các tác vụ và gửi toàn bộ tác vụ đến tiến trình R. Nó cũng không yêu cầu chọn văn bản, cũng rất thuận tiện. Phím tắtC-c C-c có lợi thế là nó di chuyển con trỏ đến cửa sổ R, vì vậy bạn có thể kiểm tra ngay kết quả của câu lệnh R đã gửi.

Vì vậy, quy trình làm việc cơ bản của tôi đang di chuyển rất nhiều giữa các cửa sổ và bộ đệm. Để thuận tiện cho việc này, tôi sử dụng các phím tắt sau trong tệp .emacs của mình:

(define-key global-map [f1] 'Control-X-prefix)
(define-key global-map [f3] 'find-file)
(define-key global-map [f2] 'save-buffer)
(define-key global-map [f8] 'kill-buffer)
(define-key global-map [f5] 'switch-to-buffer)
(define-key global-map [f6] 'other-window)
(define-key global-map [f9] 'ess-load-file)

Tôi hiếm khi sử dụng f1, nhưng tất cả những người khác rất thường xuyên. Các cài đặt ESS cụ thể khác mà tôi sử dụng là như sau:

(setq comint-input-ring-size 1000)
(setq ess-indent-level 4)
(setq ess-arg-function-offset 4)
(setq ess-else-offset 4)

Điều này nói với ESS để làm cho tab rộng 4 ký tự (mặc định là 2), đó là sở thích cá nhân của tôi và mở rộng số lượng lệnh đã ban hành mà ESS lưu dưới dạng lịch sử.

Để làm việc trực tiếp với quá trình R, tôi thấy các phím tắt sau rất hữu ích:

(add-hook 'inferior-ess-mode-hook 
      '(lambda nil 
         (define-key inferior-ess-mode-map [\C-up] 'comint-previous-matching-input-from-input)
             (define-key inferior-ess-mode-map [\C-down] 'comint-next-matching-input-from-input)
        (define-key inferior-ess-mode-map [\C-x \t] 'comint-dynamic-complete-filename)
        )
)

Điều này nhớ lại câu lệnh R từ lịch sử câu lệnh R của bạn, nhưng nó cố gắng khớp nó với câu lệnh đã có trên dòng của bạn. Vì vậy, ví dụ gõ plvào quá trình R và nhấn \C-up(đó là điều khiển và mũi tên lên) sẽ quay vòng qua tất cả các câu lệnh bắt đầu pl, vì vậy sẽ nhớ lại ví dụ như tất cả các plot(...lệnh.

Cài đặt cuối cùng tôi sử dụng với ESS là như sau:

(setq ess-ask-about-transfile t)

Bằng cách này, ESS luôn hỏi nơi lưu văn bản trong bộ đệm với quy trình R. Tôi thường đánh số các tệp này theo ngày, vì vậy tôi luôn có một cách khác để theo dõi chính xác những gì tôi đang làm. Nhắc nhở duy nhất của tùy chọn này là vì một số lý do, ESS đặt bộ đệm R thành chỉ đọc, sau khi tải R. Phím tắt để tạo bộ đệm có thể ghi là C-x C-q.

Vì vậy, đây là những cài đặt của tôi mà tôi sử dụng để làm việc với ESS, tôi cảm thấy hài lòng với chúng và tôi không cảm thấy cần phải thêm bất cứ điều gì trong một vài năm. Khi giới thiệu ESS cho người dùng lần đầu, tôi thường đưa ra tổng quan này.

Tôi sẽ kết thúc bằng phím tắt cuối cùng mà theo tôi là phím tắt được sử dụng nhiều nhất khi làm việc với Emacs và đặc biệt là với ESS C-g, đó là thoát lệnh trong bộ đệm mini. Trong suốt những năm tôi làm việc với Emacs và ESS, tôi vẫn cố gắng gọi ra một số lệnh Emacs mà tôi không muốn, C-grất hữu ích trong những tình huống này.


Cảm ơn bạn! Thông tin này rất hữu ích, tôi sẽ cố gắng định cấu hình thiết lập Emacs của mình theo cách tương tự. Về các điểm cụ thể của hệ điều hành, tôi đang dùng Linux (Fedora 15), vì vậy tôi không chắc liệu điều đó có làm thay đổi cấu hình / bố cục hay không.
Sẽ

Với Fedora, bạn sẽ có được emacs đơn giản. Tôi khuyên bạn nên cài đặt ESS bằng tay thay vì sử dụng phiên bản do Fedora cung cấp, vì điều đó có thể quá cũ. Vì vậy, về cơ bản trước tiên hãy kiểm tra cách văn bản được thao tác và khóa nào là meta. Tôi nghi ngờ M-w C-y C-wsẽ làm việc như sao chép, dán, cắt.
mpiktas

2

Tùy thuộc vào vị trí của bạn, điều này có thể không phù hợp với bạn, nhưng tôi đã tìm thấy ai đó ở dưới sảnh, người đã sử dụng nó và làm phiền họ bằng những câu hỏi. Gắn bó với nó, nó đáng giá!

Một mẹo tôi thấy đặc biệt hữu ích là sử dụng chế độ cua; nó làm cho các emacs chia sẻ một số phím tắt phổ biến nhất (như lưu, cắt, sao chép, v.v.) với các chương trình hiện đại. Tôi cũng thấy chế độ hình chữ nhật dễ sử dụng hơn trong chế độ cua.


2
Cảm ơn vì tiền boa, tôi đã bật chế độ CUA. Về mẹo khác, một trong những động lực ban đầu của tôi khi học ESS là xem một trong những giáo sư của tôi có thể chỉnh sửa mã nhanh như thế nào trong một bài giảng. Tôi xa trường vào mùa hè, nhưng tôi sẽ cố gắng tìm một "người cố vấn" khi tôi trở về.
Sẽ
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.