Emacs Speaks Statistics를 배우기위한 좋은 참고 자료 / 조언은 무엇입니까?


9

나는 몇 년 동안 R을 사용해 왔지만 항상 Tinn-R, JGR 및 가장 최근의 R-Studio와 같은 GUI를 사용했습니다.

R-Studio의 인터페이스가 마음에 들지만 그래픽이 적거나없는 더 긴 프로그램의 경우 Emacs와 같은보다 기본적인 텍스트 편집기에서 제공하는 바로 가기를 활용하여 더 효율적으로 코딩 할 수 있다고 생각합니다.

Emacs와 ESS 플러그인을 설치했는데 모든 것이 제대로 작동하고 일부 코드를 테스트했지만 익숙해지기 어려운 시간이 있는데 적절한 참조 매뉴얼을 찾지 못했습니다.

Google 검색은 플러그인을 설치하고 구성하는 데 중점을 둔 자습서가 포함 된 매우 오래된 웹 사이트를 반환하며 공식 웹 사이트의 매뉴얼은 너무 밀도가 높습니다.

R에 익숙하지만 Emacs에는 익숙하지 않은 사람을 위해 비교적 간단한 소개 (스크린 샷 및 단축키 목록)를 찾고 있습니다.

시작에 대한 참조 또는 기타 팁은 크게 감사하겠습니다.

답변:


11

먼저 emacs로 작동하는 기본 텍스트를 배워야합니다. emacs는 텍스트와 복사를 간단하게 선택하는 방법을 찾는 것이 매우 정교하므로 어려울 수 있습니다. 따라서 효율적으로 수행하는 방법을 찾는 데 시간을 투자하십시오. 설명서를 읽으면 도움이 될 수 있습니다. Mac OS X의 경우 Aquamacs를 사용하면 기본 단축키를 지원합니다.

ESS에 대한 작업은 R에 대한 작업과 다르지 않습니다. 코드 구성에 대한 동일한 규칙이 적용되어야합니다. 필자의 경우 모든 프로젝트에는 홈 디렉토리에있는 R이라는 상위 디렉토리에있는 자체 디렉토리가 있습니다 (Windows의 경우 모든 소스가있는 디렉토리를 emacs 홈 디렉토리로 지정하는 것이 좋습니다). 따라서 ESS를 사용하여 프로젝트 작업을 할 때 항상 M-x R시작 디렉토리 내 프로젝트 디렉토리를 선택합니다.

R 프로세스를 시작한 후에는 보통 emacs를 두 개의 창 (emacs 용어)으로 나눕니다. 그런 다음 왼쪽에는 소스 코드가 있으며 오른쪽의 R 프로세스로 보냅니다. 관련 단축키 (emacs 단축키)는 C-x 3창을 세로로 분할 C-x 1하고 현재 버퍼를 유일한 창으로 만들고 C-x 2창을 가로로 분할하기위한 것입니다.

코드를 R로 보낼 때 함수와 R 문을 구분합니다. 나는 보통 모든 파일을 하나의 파일로 유지 하여이 작업을 수행합니다 10code.R. 그런 다음 load ESS file 옵션 (shortcut C-c C-l)을 사용하여이 파일을 간단히로드 할 수 있습니다 . 이 접근법의 장점은 모든 기능을 소싱하고 R 버퍼에서 아무것도 생성하지 않는다는 것입니다. 코드에 오류가 있으면 ESS가 미니 버퍼에 메시지를 표시하고 C-c` 를 눌러 조사 할 수 있습니다 .

다른 코드는 데이터를로드하고 데이터를 정리하고 통계 모델에 적합하며 결과를 검사하고 최종 결과를 생성하는 자체 설명을 유지하려는 R 문입니다. 이 문장의 소스 코드는 프로젝트의 현재 상태입니다. 프로젝트가 완료된 후이 코드로 파일을 소싱하면 프로젝트가 재생산됩니다 (트랙 내역을 추적하기 위해 git도 사용합니다). 이 파일로 작업 할 때 보통 하나의 R 문으로 만 작업합니다.이 문장은 eval 함수, 단락, statement 명령 인 단축키가 R 프로세스로 전송됩니다 C-c C-c. 이 명령은 단락, 즉 줄 바꾸기로 구분 된 텍스트를 R 프로세스에 보냅니다. R 문을 작업으로 그룹화하고 전체 작업을 R 프로세스로 보낼 수 있으므로 편리합니다. 또한 텍스트를 선택할 필요가 없으므로 매우 편리합니다. 바로 가기C-c C-c 커서를 R 창으로 옮기면 전송 된 R 문의 결과를 즉시 검사 할 수 있다는 이점이 있습니다.

그래서 기본 워크 플로는 창과 버퍼 사이를 많이 이동합니다. 이를 위해 .emacs 파일에서 다음 바로 가기를 사용합니다.

(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)

나는 거의 사용하지 f1않지만 다른 모든 것을 매우 자주 사용합니다. 내가 사용하는 다른 특정 ESS 설정은 다음과 같습니다.

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

이것은 ESS에게 탭을 4 자로 넓게 (기본값은 2) 내 개인 취향으로 만들고 ESS가 기록으로 저장하는 발행 된 명령의 수를 확장합니다.

R 프로세스를 직접 사용하는 경우 다음 단축키가 매우 유용하다는 것을 알았습니다.

(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)
        )
)

이것은 R 명령문 히스토리에서 R 명령문을 리콜하지만 이미 라인에있는 R 명령문과 일치 시키려고 시도합니다. 예를 들어 plR 프로세스에서 입력 하고 \C-up(제어 및 위쪽 화살표)를 누르면로 시작하는 모든 문장이 순환 pl되므로 모든 plot(...명령을 호출 합니다.

ESS와 함께 사용하는 최종 설정은 다음과 같습니다.

(setq ess-ask-about-transfile t)

이런 식으로 ESS는 항상 R 프로세스를 사용하여 버퍼에 텍스트를 저장할 위치를 묻습니다. 나는 보통 날짜에 따라이 파일들의 번호를 매기므로, 항상 내가하고있는 것을 정확하게 추적 할 수있는 다른 방법이 있습니다. 이 옵션의 유일한 경고는 어떤 이유로 ESS가 R을로드 한 후 R 버퍼를 읽기 전용으로 설정한다는 것입니다 C-x C-q. 버퍼를 쓰기 가능하게 만드는 바로 가기는 입니다.

ESS로 작업 할 때 사용하는 설정이 마음에 들었습니다. 이미 몇 년 동안 아무것도 추가 할 필요가 없습니다. 처음 사용자에게 ESS를 도입 할 때 나는 일반적으로이 개요를 제공합니다.

나는 Emacs를 사용할 때 가장 많이 사용되는 단축키이며 특히 ESS C-g는 미니 버퍼에서 명령을 종료하는 최종 단축키로 끝납니다 . 몇 년 동안 나는 Emacs 및 ESS와 함께 일하면서도 내가 원하지 않는 일부 Emacs 명령을 호출 할 수 있으며, C-g이러한 상황에서 매우 도움이됩니다.


감사합니다! 이 정보는 매우 유용합니다. 비슷한 방식으로 Emacs 설정을 구성하려고합니다. 운영 체제 특정 포인트와 관련하여 Linux (Fedora 15)를 사용하므로 구성 / 레이아웃에 차이가 있는지 확실하지 않습니다.
Will

Fedora를 사용하면 일반 이맥스를 얻을 수 있습니다. Fedora 제공 버전을 사용하는 대신 ESS를 직접 설치하는 것이 좋습니다. 너무 오래된 버전 일 수 있습니다. 기본적으로 먼저 텍스트가 어떻게 조작되고 어떤 키가 메타인지 확인하십시오. 나는 M-w C-y C-w복사, 붙여 넣기, 잘라내 기로 작동 할 것으로 의심 됩니다.
mpiktas

2

당신이 어디에 있는지에 따라, 이것은 당신을 위해 작동하지 않을 수 있지만, 나는 그것을 사용하는 복도에서 누군가를 발견하고 질문으로 그들을 괴롭 혔습니다. 그것에 충실하십시오, 그만한 가치가 있습니다!

특히 유용한 팁 중 하나는 cua-mode를 사용하는 것입니다. emacs는 최신 프로그램과 함께 가장 일반적인 키보드 단축키 (저장, 잘라 내기, 복사 등)를 공유합니다. 또한 사각형 모드를 cua 모드에서 사용하기가 훨씬 쉽다는 것을 알았습니다.


2
팁 주셔서 감사합니다, 나는 CUA 모드를 활성화했습니다. 다른 팁과 관련하여, ESS 학습에 대한 나의 원래 동기 중 하나는 강의 중에 교수 중 한 명이 코드를 얼마나 빨리 편집 할 수 있는지 지켜 보는 것이 었습니다. 나는 여름 동안 캠퍼스를 떠나 있지만 돌아올 때 "멘토"를 찾으려고 노력할 것입니다.
Will
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.