R에서의 객체 지향 프로그래밍에 대한 튜토리얼


15

R의 객체 지향 프로그래밍에 대한 자습서가 있습니까?

다음을 포함하면 좋을 것입니다.

  • 클래스를 정의하는 방법;
  • S3과 S4 클래스의 차이점;
  • 연산자 오버로드 (내가 생각하고 있는 클래스의 a+b위치 ab인스턴스 를 쓸 수 있기를 원합니다 ).

답변:


10

Hadley Wickham의 devtools 위키 는 간결한 형태로 필요한 정보를 제공하는 훌륭한 자료입니다. 그러나 전체 리소스를 원할 경우 R 언어 설명서의 OOP 섹션이 도움이 될 수 있습니다. 경험이 많은 회원이 더 나은 제안을 할 것이라고 확신합니다.



4

Hadley Wickham의 " Advanced R "에는 아주 좋은 소개와 참고 자료가 있습니다. 더 나은 인덱싱을 위해이 섹션을 복제하고 있습니다.

시스템 따기

3 개의 OO 시스템은 하나의 언어에는 적합하지만 대부분의 R 프로그래밍에는 S3이면 충분합니다. R에서는 일반적으로 print (), summary () 및 plot ()과 같은 기존의 일반 함수에 대해 상당히 간단한 객체와 메소드를 만듭니다. S3은이 작업에 적합하며 R로 작성한 OO 코드의 대부분은 S3입니다. S3는 기발한 것이지만 최소한의 코드로 작업을 수행합니다.

보다 복잡한 상호 관련 개체 시스템을 만드는 경우 S4가 더 적합 할 수 있습니다. Douglas Bates와 Martin Maechler의 Matrix 패키지가 좋은 예입니다. 다양한 유형의 희소 행렬을 효율적으로 저장하고 계산하도록 설계되었습니다. 버전 1.1.3부터는 102 개의 클래스와 20 개의 일반 함수를 정의합니다. 패키지는 잘 작성되고 주석이 달려 있으며 함께 제공되는 비 네트 (vignette ( "Intro2Matrix", package = "Matrix"))는 패키지 구조에 대한 개요를 제공합니다. S4는 또한 생물 전도체 패키지에 의해 광범위하게 사용되며, 생물학적 물체 사이의 복잡한 상호 관계를 모델링해야합니다. 바이오 컨덕터는 S4를 학습하기위한 많은 훌륭한 자료를 제공합니다. S3를 마스터했다면 S4는 비교적 쉽게 픽업 할 수 있습니다. 아이디어는 모두 같습니다

주류 OO 언어로 프로그래밍 한 경우 RC는 매우 자연스럽게 보입니다. 그러나 가변 상태를 통해 부작용을 일으킬 수 있기 때문에 이해하기가 더 어렵습니다. 예를 들어, 일반적으로 R에서 f (a, b)를 호출하면 a와 b가 수정되지 않는다고 가정 할 수 있습니다. 그러나 a와 b가 RC 객체이면 그 자리에서 수정 될 수 있습니다. 일반적으로 RC 객체를 사용할 때는 가능한 한 부작용을 최소화하고 변경 가능한 상태가 절대적으로 필요한 경우에만 사용하십시오. 대부분의 기능은 여전히 ​​"기능적"이어야하며 부작용이 없어야합니다. 이를 통해 코드를 쉽게 추론하고 다른 R 프로그래머가 쉽게 이해할 수 있습니다.

그는 " S4 프로그래밍에 대한 실용 자습서 "를 참조 합니다.

그의 지시를 따르면 많은 다른 흥미로운 자료가 있습니다.

John M. Chambers는 "객체 지향 프로그래밍, 기능 프로그래밍 및 R"에서 다음 과 같이 말합니다 .

R은 또한 함수형 프로그래밍의 아이디어, 특히 함수형 객체와 함수형 프로그래밍을 결합하려는 욕구에 크게 영향을 받았습니다.

질문과 직접 ​​관련이 없지만 "대량 데이터 과학을위한 Spark의 DataFrames" 같은 아이디어를 추가 할 것 입니다. 이것이 스칼라와 R에 더 가까워 지므로, 이로부터 나오는 훌륭한 OO / 기능적 시너지 효과가있을 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.