2016-07-19 1 views
17

R 코어 라이브러리에는 두 가지 기능이 있습니다. `rownames`보다`row.names`가 더 좋은 이유는 무엇입니까?

  • row.names

    get 및 set 행 이름은 데이터 프레임이
  • rownames매트릭스와 같은 개체의 열 이름을 검색하거나 설정합니다.
row.names 용 문서가 데이터 프레임 'rownames'결국 'row.names'및 '이름'은 각각 호출 'COLNAMES'들어 을 지정하지만

되지만, 후자가 바람직하다.row.names을 선호합니까? row.names을 무시하고 rownames으로 전화하는 것이 더 쉽지 않을까요?

+2

R [rownames()와 row.names()의 차이점은 무엇입니까?] (http://stackoverflow.com/questions/33882782/what-is-the-difference-between-rownames- and-row-names-in-r) – Noah

+4

링크가 전혀 도움이되지 않습니다. –

+3

@RichardScriven이 질문이 좋은 답변을 얻는다면 다른 질문은이 질문의 사본으로 마감해야합니다. –

답변

7

row.names()은 S3 일반 함수이고 반면에 rownames()은 하위 일반 비 일반 함수입니다. rownames()은 사실보다 구체적인 방법이없는 경우 모든 개체에 적용되는 row.names()의 기본 방법입니다.

데이터 프레임 x에서 작업하는 경우 데이터 프레임에 특정 row.names() 방법이 있으므로 row.names(x)을 사용하는 것이 더 효율적입니다. 데이터 프레임에 대한 row.names() 방법은 이미 x에 저장된 "row.names" 특성을 추출합니다. 반대로 rownames()의 정의와 함수 간의 상호 관계로 인해 rownames(x)x의 모든 차원 이름을 추출한 다음 열 이름을 삭제하고 names(x)과 결합한 다음 names(x)을 다시 놓아야합니다. 이 과정은 심지어 중간 단계로 row.names(x)에 대한 호출을 포함합니다. 이 모든 것은 대개 너무 빨리 일어나서 눈치 채지 못하지만, 속성을 추출하는 것은 분명 더 효율적입니다.

두 가지 기능을 구분하지 않으려면 적절한 방법을 항상 발송하기 때문에 항상 일반 버전 row.names()을 사용하는 것이 논리적 일 것입니다. 예를 들어 x이 행렬 인 경우 row.names(x)rownames(x)으로 완전히 전달되지만 그 개체 클래스에 대한 구체적인 방법이 없기 때문입니다.

관련 문제