factor() 와 as.factor() 두 가지가 완전히 동일한 줄 알았습니다.
as.factor() 를 사용하다 에러가 뜨는 경우를 만났습니다.
이것을 해결하기 위해 이것 저것 엉뚱한 것들을 시도해보았습니다.
factor() 와 as.factor() 와 같은 줄 알고 factor()로는 시도조차 안 해보다가, factor() 로 바꾸면 해결되는 것을 알았을 때 어이가 없었습니다.
인터넷 검색을 해보았는데 나름 정리가 잘된 글을 보았습니다.
그렇다면 R 프로그램에서 범주형 변수를 생성할 수 있는 두 함수, factor와 as.factor의 차이점은 무엇일까?
둘 다 factor를 생성할 수 있고 level을 지정할 수 있다. 그렇지만 as.factor는 원래 factor가 아닌 데이터형을 factor로 만들기 위해 사용되는 함수이다.
[출처] factor()와 as.factor()|작성자 솜돌
정리가 잘 된 글인 것 같지만 아직도 충분히 이해가 되지 않아 R document 를 보았습니다.
?as.factor
설명서를 찾아보았습니다.
as.factor 와 factor 가 각각 있을 줄 알았는데 factor 설명서 하나입니다.
Examples 에 있는 두 가지 샘플을 보았습니다.
factor(c(1:2, NA), exclude = "" )
factor(letters[1:20], labels = "letter")
예제 스크립트를 as.factor 로 시도해보았습니다.
unused argument 에러가 납니다. 애초에 경험했던 바로 그 에러입니다.
as.factor(c(1:2, NA), exclude = "" )
Error in as.factor(c(1:2, NA), exclude = "") :
unused argument (exclude = "")
as.factor(letters[1:20], labels = "letter")
Error in as.factor(letters[1:20], labels = "letter") :
unused argument (labels = "letter")
Usage
factor(x = character(), levels, labels = levels,
exclude = NA, ordered = is.ordered(x), nmax = NA)
...
as.factor(x)
is.factor, is.ordered, as.factor and as.ordered are the membership and coercion functions for these classes.
as.factor coerces its argument to a factor. It is an abbreviated (sometimes faster) form of factor.
여기까지 공부해서 얻은 결론은 as.factor 에는 인자가 1개만 올 수 있어서 추가적인 인수가 오면 에러가 나고, 형변환 용도로 사용된다는 것입니다.
그렇다면 인수가 오직 하나인 경우 즉, as.factor(x) 와 factor(x) 는 완벽히 동일한 것일까요?
답은 아직 모르겠습니다.
'ADP (R)' 카테고리의 다른 글
[R] length of 'dimnames' [2] not equal to array extent (0) | 2022.10.30 |
---|---|
[R]`data` and `reference` should be factors... (0) | 2022.10.30 |
[Adp 실기 기출 풀이] 25회 평균 계산 문제 (0) | 2022.10.27 |
ADP 실기 기출 풀이 모음 (~26회) (1) | 2022.10.27 |
[R] 로지스틱 회귀 연습 (with mtcars) (0) | 2022.10.26 |