요즘 관심사는 microbiome data의 특성과, 관련 통계 분석 법이다.
강의를 듣는 건 머리에 들어오지 않아서, 여러 DAA방법을 사용할 수 있는 MicrobiomeMarker 패키지의 함수를 하나하나 살펴보는 중이다. 말 그대로 이론공부보다는 문제은행을 통해서 실전함수부터 공부하고 있다.
run_ancom() 함수를 보니, 가장 첫 번째 줄에 있는 내용은 input data 가 phyloseq 형식인지 아닌지를 묻고 있다.
이를 stopifnot(inherits(ps, "phyloseq")) 으로 나타낸다.
ps파일이 phyloseq class인지 아닌지 묻는 역할을 가진다. 그런데 이는 is()와 같은 역할로 보였다. 하지만 is(ps, "phyloseq") 는 아무런 값도 반환하지 않는다. 이에 대해 관련 내용을 조금 찾아보았다.
What's the difference between is and inherits? 글에 따르면 "inherits()는 is()과 거의 동일하지만 조금 더 빠르다. 차이점으로는 is는 S4 class값을 무시한다."
말 그대로 phyloseq이 S4 class이기 때문에 is함수로는 T, F 값을 반환하지 않았다.
(출처 : https://stackoverflow.com/questions/27923345/whats-the-difference-between-is-and-inherits)
그렇다면 S4 class란 무엇인가?
R에서 S4 class란 S3 class를 개선한 class로 조금 더 구조화된 방식으로 객체를 정의할 수 있다. 대부분 패키지 개발이나 복잡한 데이터구조를 다룰 때 사용된다. phyloseq은 biom format으로 총 4개의 데이터를 통합해서 관리하는 객체이다 보니 R의 S4 class로 이루어진 것 같다.