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:/Rproject/Library)
폴더를 만들고자 하는 위치에서 우클릭 -> 새로 만들기 -> 폴더 선택
- 폴더 이름은 자유롭게 정하면 된다. 다만 한글을 포함하지 않도록 하는 것이 중요하다.
C:/기의통/RLibrary -> 역시 곤란하다. '기의통' 부분을 ??? 로 인식하고 찾아다닐 것이다.
D:/Rproject/Lib -> 가능함. 한글만 없으면 된다.
- 이 파일을 찾아서 메모장으로 연다. C:/Program Files/R/R-x.x.x/etc/Rprofile.site (x.x.x는 현재 사용중인 R 버전이다.)
- 파일을 찾아서 우 클릭 후 [편집]을 선택한다.
- Rprofile.site 파일 가장 아래에 다음을 추가한다.
.libPaths("C:/Rproject/Library")- libPaths 앞 마침표 . 하나 꼭 필요하다.
- 대소문자에 유의한다.
C:/Rproject/Library 대신 위에서 실제로 만든 폴더 위치를 입력한다.
- 파일을 저장한다. (Windows 관리자 권한이 필요하다)
R을 재시작하면 앞으로 package는 C:/Rproject/Library 혹은 지정된 폴더로 다운로드 된다.
Console에서 .libPaths()를 입력하면 설정이 바뀌었는지 확인 가능하다.
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 서버에는 한글 폰트가 아예 없음. 한글 폰트 지정이 불가능함
- 그래프에서 한글을 포기한다.
- 한글 내용을 영문으로 출력한다.
| /CentralLimitTheorem /ChiSquared /Clustering /InstallR /InstallRStudio /Lies /NormalDistribution /RBasic /RBasic1 /RBasic2 /RBasic3 /RCloud /RIntro /RKorean /T-Test |
