본문 바로가기

Language/R

R에서 나는 에러들(invalid multibyte character, Error in Select, 한글깨짐)

728x90

R자주쓰는 기능

krksap.tistory.com/1713

 

invalid multibyte character in parser at line 날때

r을 쓰다보면 한글이 깨지는 문제가 있습니다.

윈도우 같은 경우는

Sys.getlocale()

을 해보면
[1] "LC_COLLATE=Korean_Korea.949;LC_CTYPE=Korean_Korea.949;LC_MONETARY=Korean_Korea.949;LC_NUMERIC=C;LC_TIME=Korean_Korea.949"

로 나옵니다.

한글이 포함되어 있는 파일을 불러오면

Error in (function (file = "", n = NULL, text = NULL, prompt = "?", : invalid multibyte character in parser at line 12
이런 파싱 에러가 날 때가 있습니다.

그럴때 아래 코드를 콘솔에 입력 해줍니다.

Sys.setlocale("LC_CTYPE", ".1251")

LC_CTYPE을 .1251로 바꿔주는 명령어 입니다.

Sys.getlocale()
[1] "LC_COLLATE=Korean_Korea.949;LC_CTYPE=Korean_Korea.1251;LC_MONETARY=Korean_Korea.949;LC_NUMERIC=C;LC_TIME=Korean_Korea.949"

위와 같이 getlocale()을 하면 LC_CTYPE이 1251로 바뀝니다.

이렇게 바꾸고 돌리면 코드는 돌아갑니다. 그런데 콘솔에서 한글이 깨져서 보입니다.

쨌든 돌아간다는것.

초기 설정으로 돌아가기

Sys.setlocale("LC_ALL")

하다보면 초기 설정으로 돌아가고 싶을때가 있습니다. 그러면 위 명령어를 써주면 됩니다.

출력문제 해결하기

Sys.setlocale("LC_ALL", "korean")

로직을 짜서 데이터를 다 돌렸는데 Sys.setlocale("LC_CTYPE", ".1251") 이걸로 놓으면 한글이 콘솔에서 계속 깨져 보입니다. 그래서 다시 한글을 보고싶을 때는 위 명령어를 쓰고 돌립니다. 그런데 위에서 돌아가던게 이렇게 바꾸면 안돌아가니까 다 돌리고 나서 해야 합니다.

 

Error in select 에러 날 때

나는 이유는 다른 패키지에 있는 select()와 충돌할 때 납니다.

dplyr::select()를 해주면 됩니다.

 

한글 있는 파일 안불러와지거나 깨질 때

유효하지 않은 입력을 찾았습니다 나올 때 sublime text로 불러와서 Save with Encoding을 utf-8로 해주고

꼭 Save As로 다른 이름으로 새로 저장 해주어야 합니다. 안그러면 안될때가 많습니다.

그리고 R에서는 read.csv(fileEncoding = 'utf-8') fileEncoding을 utf8로 했음

728x90
블로그 주인장입니다. 원하시는 정보는 얻으셨나요? 이 포스트에서 추가로 필요한 정보가 있으시면 여기에 남겨주세요.