1. 문제
dplyr 패키지의 select 함수를 사용하다가 갑자기 오류메시지가 떴습니다.
MASS 패키지에서 제공하는 Boston 데이터를 dplyr 로 가공하는 과정이었습니다.
library(dplyr)
library(MASS)
data(Boston)
Boston
Boston %>% mutate(y=rm,x=lstat) %>% select (rm,lstat) %>% head()
Error in select(., rm, lstat) : unused arguments (rm, lstat)
평소 잘 쓰던 기능이 갑자기 Error 를 뿌리니 깜짝 놀랐습니다.
2. 재현
재현 및 troubleshooting 효율성을 위해 Boston 데이터 부분을 mtcars 로 변경하여 진행해볼께요.
library(dplyr)
library(MASS)
mtcars %>% select(mpg,cyl) %>% head()
Error in select(., mpg, cyl) : unused arguments (mpg, cyl)
3. 문제 원인
결론부터 말씀드리면 MASS 패키지와 쫑난 것이 문제 원인입니다.
좀 더 자세한 원인을 설명하면,
Boston 데이터를 사용하기 위해 로드했던 MASS 패키지에도 select 함수가 있었고,
dplyr 의 select 기능을 기대했던 부분에서 MASS 패키지의 함수가 호출이 되었으며,
해당 함수에서는 불필요한 인자였던 것입니다.
4. 해결 방법
해결방법1: deplyr::select 로 변경하여 사용할 패키지를 명확하게 지정해줌
library(dplyr)
library(MASS)
mtcars %>% dplyr::select(mpg,cyl) %>% head()
해결방법2 : 패키지 로드 순서 변경하여 dplyr 이 나중에 로드되도록 합니다.
library(MASS)
library(dplyr)
mtcars %>% select(mpg,cyl) %>% head()
5. 해결을 위한 시도했던 몇 가지 노력들
인자를 " 묶어 주기 즉, select("mpg","cyl")로 보았으나 결과는 동일. 실패
웹에서 unused arguments 키워드로 검색을 해보았습니다.
https://blog.naver.com/longlife27/222440714153
rm("c") 해서 성공했다고 하여 rm(mpg) rm(cyl) 호출 후 시도. 실패
rm(list=ls()) 호출후 시도 실패
다른 검색결과를 보고 성공했습니다.
위 글을 보고 dplyr::select 를 호출하여 성공했습니다.