2014-09-16 2 views
2

아마도 여기에서 상상할 수있는 S4 클래스에 대한 가장 기본적인 질문 일 것입니다.S4 클래스를 저장하는 가장 쉬운 방법

정의한 S4 클래스를 저장하여 다른 곳에서 재사용 할 수있는 가장 간단한 방법은 무엇입니까? 나는 많은 대규모 데이터 세트를 가져 와서 그것들로부터 요약 정보를 작은 S4 객체로 컴파일하는 프로젝트를 가지고있다. 따라서 각 세션에 대한 요약 개체를 만들기 위해 R 세션을 전환 할 것이므로 포함 할 필요없이 저장된 개체의 클래스 정의에로드하거나 자동으로로드 할 수 있으면 좋을 것입니다. 각 스크립트 맨 위에있는 객체의 긴 정의 (객체를 정의하는 코드가 일관성이 없기 때문에 어쨌든 나쁜 관행이라고 생각합니다).

그래서 saveclass ("myClass"), loadclass ("myclass")의 줄에있는 구문은 무엇입니까? 아니면 잘못된 방식으로 생각하고 있습니까?

+2

일반적인 방법은 패키지를 만들어로드하는 것입니다. –

답변

2
setClass("track", representation(x="numeric", y="numeric")) 
x <- new("track", x=1:4, y=5:8) 

는 ASCII로에서

save(x, ascii=TRUE, file=fn) 

ASCII 텍스트 표현이 데이터
dput(x, file=fn) 
y <- dget(fn) 

original source

을 재생하는
fn <- tempfile() 
save(x, ascii=FALSE, file=fn) 
rm(x) 
load(fn) 
x 

로 저장 저장 여기에서 찾을 수 있습니다.

2

질문에서 나는 실제로 을 수행 할 것이라고 생각합니다.은 클래스 정의의 이진 표현을 저장하고로드하는 대신 클래스 정의를 각 스크립트의 상단에 포함하려고합니다 (문자 그대로는 아니지만 아래 참조). 그 이유는 단순한 텍스트 표현에 비해 이진 표현이 더 취약하다는 것입니다 (소프트웨어 구현) (예 : 너무 멀지 않은 과거의 S4 객체는 class 속성이있는 단순한 목록을 기반으로했기 때문에 more 최근에 그들은 기본 C- 레벨 데이터 표현에 설정된 S4 '비트'주위에 구축되었습니다).

각 스크립트에 정의를 복사하여 붙여 넣는 대신 실제로 클래스 정의 (및 관련 메서드)를 R 패키지에 포함시키고 스크립트의 맨 위에 패키지를로드하는 것이 가장 좋습니다. 실제로 패키지를 작성하는 것은 어렵지 않습니다. 시작하기 쉬운 방법은 Rstudio를 사용하여 '새 프로젝트'를 'R 패키지'로 만드는 것입니다. 패키지의 버전 번호를 사용하여 사용중인 클래스 정의/메소드의 버전을 추적하고 버전 제어 (예 : svn 또는 git)를 사용하여 변경/탐색을 쉽게 추적 할 수 있습니다. 계급은 성숙한다. 동료와 결국 큰 R 커뮤니티와 공유하여 다른 사람들이 열심히하고 통찰력을 얻을 수 있도록하십시오!

관련 문제