R에서 한글 사용시 고려해야할 것들
한글 Windows에서 R 사용시 주의할 것들
install.packages()의 오류
install.packages()를 call하면 R은 해당 package를 다운로드 받아 library에 저장한다.
- R은 첫번째로 C:/Program Files/R/R-x.x.x/library 에 저장을 시도한다.
- 그런데 Windows에서 C:/Program Files는 보안을 이유로 접근을 제한한 위치이다.
- 그런데 Windows에서 C:/Program Files는 보안을 이유로 접근을 제한한 위치이다.
- 그래서 R은 사용자에게 묻는다. Would you like to create a personal library at C:/Users/계정이름/Documents/R/win-library/x.x?
- 그런데 저 계정이름이 한글인 경우 R은 인식을 못 한다. 한글을 ??? 로 인식하고 그 폴더를 찾지만 그런 폴더가 있을리가 없지.
계정 이름이 영문으로 된 경우는 당연히 아무 문제가 없다.
해결책
- R Library로 쓸 빈 폴더를 하나 만든다. (예: C:\Library\R)
폴더를 만들고자 하는 위치에서 우클릭 -> 새로 만들기 -> 폴더 선택
- 폴더 이름은 자유롭게 정하면 된다. 다만 한글을 포함하지 않도록 하는 것이 중요하다.
C:\기의통\RLibrary -> 역시 곤란하다. '기의통' 부분을 ??? 로 인식하고 찾아다닐 것이다.
D:\Rproj\Lib -> 가능함. 한글만 없으면 된다.
- [시작] 버튼을 누른 후 키보드로 "제어판"을 입력하여 "제어판"을 실행한다.
[사용자 계정] -> [사용자 계정] -> [환경 변수 변경] 를 선택하고
- 리스트에 R_LIBS_USER 가 있는지 확인한다. 있으면 [편집]을 누르고 없으면 [새로 만들기]를 선택한다.
- 변수 이름: R_LIBS_USER
- 변수 값: C:\Library\R (위에서 실제로 만들어 둔 폴더를 입력한다)
- [확인]을 클릭하여 빠져나온 후, R(혹은 RStudio)를 재시작한다.
R을 재시작하면 앞으로 package는 C:\Library\R 혹은 지정된 폴더로 다운로드 된다.
Console에서 Sys.getenv("R_LIBS_USER")를 입력하면 설정이 바뀌었는지 확인 가능하다.
OneDrive에서 한글 인식 오류
OneDrive가 설치된 Windows PC에서는 계정 아래 "문서" 폴더가 R의 기본 폴더로 지정되는데,
- "문서"라는 한글을 인식 못 해서 ??? 라는 이름의 폴더를 찾고서는 그런 폴더 없다고 오류 메세지를 내보낸다.
해결책
- 위와 같은 방법으로 환경변수를 추가한다.
- 변수 이름: R_USER
- 변수 값: 이름에 한글이 없는 폴더 아무거나 (혹은 %USERPROFILE% 라고 하면 사용자의 기본 폴더로 지정된다)
macOS나 Linux에서 고려할 사항
다운로드 받은 한글 데이타가 깨져서 로딩 될 때
한글 encoding 문제임.
- 한글은 내부적으로 2진수로 변환하여 저장/처리되는데, 그 2진수화 과정을 encoding 이라고 부름.
MS-Windows는 EUC-KR이라는 encoding 방법을 이용하여 한글을 변환함.
macOS나 RStudio.cloud를 포함하는 Unix, Linux 운영체제는 UTF-8이라는 encoding 방법을 이용하여 한글을 변환함.
문제는 Windows system에서 작성된 한글 text 파일을 Unix(macOS 포함)나 Linux(RStudio.cloud 포함)에서 읽을 때 일어남.
해결방법: read.csv() 함수를 사용할 때 fileEncoding = 'euc-kr' 옵션을 추가.
반대로 Unix, Linux에서 작성된 한글 text 파일을 다운받아 Windows 에서 열 때는 fileEncoding = 'utf-8' 옵션을 추가.
- Windows도 궁극적으로는 업계표준인 utf-8으로 통일 될 것이다.
plot()에서 한글이 깨져 보일 때
한글을 출력할 폰트가 지정이 안 되어 생기는 문제
- 한글 폰트를 지정하여 간단히 해결
주의: RStudio.cloud 서버에는 한글 폰트가 아예 없음. 한글 폰트 지정이 불가능함
- 그래프에서 한글을 포기한다.
- 한글 내용을 영문으로 출력한다.