R을 프로덕션 레벨에서 사용하자!

대부분 많은 사람들이 알겠지만 R은 분석언어이고, 프로덕션에션 레벨에서 사용하기 힘든 언어이다.프로덕션에서 사용하기 힘들다는건 서비스로 적용하기 힘든 프로토타이핑용 언어라는 것이다. 이런 중요한 이유중에 하나가 퍼포먼스 이슈가 있다. R언어는 상당히 많은 부분의 리소스를 데이터의 무결성 체크(NA와 같은 값들을 결정하기 위한 로직)나 분석 오류를 잡아내기 위해 할애한다. 따라서 많은 종류의 하이레벨 함수들을 사용하게 되는데, 이는 데이터 분석시 분석 […]

계속 읽기

[R meetup] R 패키지 개발하기

지난 12월 13일 도곡동 KAIST에서 열린 R meetup에서 발표한 발표자료를 첨부한다.   KoNLP, Sejong, Ruchardet 패키지를 개발하면서 했던 시행착오들을 다른 분들은 하지 않길 바라는 마음에서 올해 꼭 하고 싶었던 meetup이었고, 발표자료보다 말로 그리고 쉘을 통해서 했던 설명들이 대부분이었던 발표였다.   발표자료 다운로드

계속 읽기

Ruchardet 패키지 submit 완료

R에서 입력되는 문서나 데이터셋의 인코딩을 알아내는 작업은 상당히 귀찮은 작업이다. 이 작업 R 쉘에서 간단하게 수행하기 위해 Ruchardet란 패키지를 개발해 CRAN에 submit하였다. 원 알고리즘 및 코드는 Mozilla 계열의 브라우저의 html파일 인코딩 예측을 하는 모듈기반에서 개발을 했으며, 패키지 라이센스도 MPL을 동일하게 따랐다. 아래와 같이 문자열에 대해서 바이트 시퀀스의 패턴을 보고 인코딩 검출을 한다. ## install.packages("Ruchardet") library(Ruchardet) […]

계속 읽기

ggmap과 네이버 맵 연동

어제 저녁부터 ggmap에 네이버 맵 연동을 해볼 생각으로 코딩을 좀 했는데, 쓸만한 수준의 구현체가 나와 공유하고자 글을 쓴다. ggmap이 위치 정보 시각화에 상당히 편리한 패키지임에도 국내 전용 지도가 아니어서 다양한 정보를 접할 수 없는 불편한 점이 있었는데, 네이버 staticmap API를 이용해 이 부분을 해결했다. 이걸 구현하는데, 지도의 X,Y 좌표와 그래프의 X,Y 좌표 연동을 하는게 가장 […]

계속 읽기

윈도우 R 수학연산 성능 향상 시키기

  금번 포스트에서는 윈도우 버전의 R의 계산 성능을 향상시키는 팁을 올려본다. 이는 물론 이 문서 에서 힌트를 얻었다는 것을 미리 알려두며, 윈도 버전의 BLAS 라이브러리의 컴파일된 바이너리가 인터넷에 존재해서 가능했다는 점을 미리 밝혀둔다.   만일 그렇다면 직접 윈도우에서 빌드를 하는 수고를 했어야 했다. 리눅스 버전의 경우 심지어 직접 소스를 빌드해야 되며 환경마다 다른 설정이 필요한 부분이 […]

계속 읽기

R 배치 프로그램 작성시 문제들과 나의 해결책

R로 분석을 하고 나서 주기적으로 돌아가는 배치 프로그램을 작성할 경우가 많다. 이 배치 프로그램을 제작하는 것은 사실 분석 프로그램을 작성하는 것과는 사뭇 다른점이 있으며, 이 부분을 제외하고 나서도 다른 언어하고 상당히 다른 동작을 하는 부분을 쉽게 찾을 수 있다. 가장 먼저 난감했던 점은 대다수의 프로그래밍 언어들이 다른 소스 스크립트나 리소스들을 참조할 때 메인 스크립트 소스파일의 […]

계속 읽기

R 3.0.0 릴리즈

진정으로 빅 데이터 시대에 맞는 R 릴리즈가 된거 같다. 3.0.0으로 버전업을 하면서 20억 레코드 정도의 데이터 프레임을 커버할 수 있는 능력이 생겼는데, 이는 하나의 분석 단위로 어마어마한 크기이며  20억 레코드의 데이터를 발견하기도 쉽지 않을 정도의 크기이다. 이전 버전까지는 64비트 OS지원이 다소 미흡했다. 한마디로 int64를 사용하지 않는 체계를 사용했는데, 그 한계가 금번 버전업에서 풀렸으며 좀더 대용량 […]

계속 읽기

KoNLP 0.76.8 업데이트

어제 cran에 새 KoNLP 바이너리들이 올라갔다. 저사양 윈도우 머신에서 VM이 생성되지 않아 패키지 사용을 못한 분들은 업데이트 하시면 잘 동작하리라 믿는다. 금번 버전에서 달라진 점은 쓸모없는 함수 정리와 모듈 정리로 패키지 용량이 상당히 줄었다는 것과, 심심치 않게 받아왔던 저사양(?) 윈도우 유저들의 자바 VM 생성 오류를 해결했다는 것이다. 무엇보다 이 오류를 위해 기꺼이 리포팅 해주시고, 많은 […]

계속 읽기

KoNLP에서 아래와 같은 에러가 나올 경우 대처 방법

library(KoNLP) 패키지 rJava를 로드중입니다 패키지 bitops를 로드중입니다 패키지 Sejong를 로드중입니다 Successfully Loaded Sejong Package.Java initialized. Error : .onLoad failed in loadNamespace() for ‘KoNLP’, details:call: .jinit(parameters = c("-Dfile.encoding=UTF-8", "-Xmx512m"))error: Cannot create Java virtual machine (-1)에러:’‘KoNLP’’ 에 대한 패키지/네임스페이스 로드가 실패했습니다 사실 위의 에러가 KoNLP와 독립적인 문제라는 것은 아래 명령어로 확인해 보면 된다.   library(rJava) .jinit() 대부분의 […]

계속 읽기

KoNLP 0.76.5 업데이트

금번 업데이트에서 크게 변경된 부분은 사용자 사전 데이터 추가의 용이성이다. 예를 들어 아래와 같다. useSystemDic() # Backup was just finished! # 13 words were added to dic_user.txt. mergeUserDic(data.frame("삼성전자", "ncn")) # 1 words were added to dic_user.txt. extractNoun("삼성전자에서는 아이폰에 대항할 무기를 준비하고 있다.") # [1] "삼성전자" "아이폰에" "대항" "무기" "준비" mergeUserDic(data.frame("아이폰", "ncn")) # 1 words were […]

계속 읽기