# 메타데이터 붙이기
name <- c("갑","을","병","정")
gender <- c(2,1,1,2)
mydata <- data.frame(name, gender)
attr(mydata$name, "what the variable means") <- "응답자의 이름"
mydata$name
attr(mydata$gender, "what the value means") <- "응답자의 성별"
myvalues <- gender
for (i in 1:length(gender)){
myvalues[i] <- ifelse(gender[i]==1, "남성", "여성")
}
myvalues
위와 같은 소스 코드를 입력하면 한글이 이상하게 출력되는 오류가 뜹니다.
Mac 환경에서 UTF-8로 작성된 한글 데이터 (.csv든 어떤 형식이든) 파일을 R로 열 때, 혹은 R 자체에서 한글 데이터를 가지고 작업을 하고 싶을 때, RStudio 콘솔에서 다음과 같이 한글이 표시되는 경우가 있습니다.
>> 결과
> name <- c("갑","을","병","정")
> gender <- c(2,1,1,2)
> mydata <- data.frame(name, gender)
> attr(mydata$name, "what the variable means") <- "응답자의 이름"
> mydata$name
[1] \352\260\221 \354\235\204 \353\263\221 \354\240\225
attr(,"what the variable means")
[1] \354\235\221\353\213\265\354\236\220\354\235\230 \354\235\264\353\246\204
Levels: \352\260\221 \353\263\221 \354\235\204 \354\240\225
위와 같은 경우 콘솔창에 아래와 같은 명령어를 입력해줍니다.
이런 경우 locale을 바꾸어주면 해결이 될 수 있다.
이렇게 한 번 설정을 해 주면 한글 데이터를 담은 변수를 제대로 핸들링 할 수 있으며
한글 데이터를 담은 csv 파일 등도 올바르게 읽어 콘솔에 출력할 수 있다.
Sys.setlocale(category = "LC_CTYPE", locale = "ko_KR.UTF-8")
그러면 아래와 같은 결과가 나오게 됩니다.
[1] "ko_KR.UTF-8"
그 다음부터는 아래와 같이 한글이 콘솔창에 잘 출력되게 됩니다.
> mydata$name [1] 갑 을 병 정 attr(,"what the variable means") [1] 응답자의 이름 Levels: 갑 병 을 정 > attr(mydata$gender, "what the value means") <- "응답자의 성별" > myvalues <- gender > for (i in 1:length(gender)){ + myvalues[i] <- ifelse(gender[i]==1, "남성", "여성") + } > myvalues [1] "여성" "남성" "남성" "여성"
다만 이 설정은 RStudio를 재시작할 시 초기화가 되기 때문에 RStudio를 시작할 때 마다 한 번씩 저 함수를 실행시켜주어야 한다.
또한 category에는 "LC_ALL" 등 다른 옵션들이 있다.
현재 locale에 따라 Character의 타입 뿐만 아니라 해당 지역의 시간대에 관한 함수, 오류 메세지 출력 등에 영향을 주는 듯.