반응형
반응형

맥에서 Sierra로 변경했더니 Rstudio가 개판됐다.


간단한 해결방법 제시한다.

1. system('defaults write org.R-project.R force.LANG en_US.UTF-8')

2. java 다시 설치하고

3 경로 지정하자. sudo ln --s $(/usr/libexec/java_home)/jre/lib/server/libjvm.dylib /usr/local/lib




반응형
반응형

출처: http://www.dbguide.net/knowledge.db?cmd=specialist_view&boardUid=168680&boardConfigUid=92&boardStep=&categoryUid

 

 

아는 사람은 다 아는 모르는 사람은 절대 모를 R에 대한 것들

 

 

R에 대한 도움 얻기

stackoverflow.com : 프로그래밍에 대한 질문

crossvalidation.com : 통계에 대한 질문

R-Help mailling lists : stat.ethz.ch/mailman/listinfo의 r-help

대부분 구글에서 질문을 질의하면 r-help로 연결을 해준다.

 

필요한 함수 찾기

help.search(“apriori”) 또는 ??apriori

또한 sos 패키지를 활용해서 찾아볼 수 있다.

install.packages("sos")

library(sos)

findFn("apriori") # 혹은 ???apriori

RSiteSearch()함수의 일부 기능을 하는 함수로서 http://search.r-project.org/ 의 결과를 data.frame으로 반환하는데이를 출력하면 html페이지로 웹브라우저를 통해 보여준다하지만 좀더 자세한 결과를 보고 싶다면 RSiteSearch()함수를 사용하는 걸 추천한다

패키지를 로딩했으나 어떤 함수가 있는지 궁금할때는 아래 명령어를 사용한다.

help(package="arules")

 

함수 동작 방식 살펴보기

“::”연사자를 이용한 패키지 내부 함수 살피기

R > KoNLP::HangulAutomata

function (input, isKeystroke = F, isForceConv = F)

{

if (!is.character(input) | nchar(input) == 0) {

stop("Input must be legitimate character!")

}

if (isKeystroke) {

if (!exists("KoKeystrokeAutomata", envir = KoNLP:::.KoNLPEnv)) {

assign("KoKeystrokeAutomata", .jnew("kr/pe/freesearch/korean/KoKeystrokeAutomata",

isForceConv), KoNLP:::.KoNLPEnv)

}

keyAuto <- get("KoKeystrokeAutomata", envir = KoNLP:::.KoNLPEnv)

KoHangulAuto <- .jcast(keyAuto, "kr/pe/freesearch/korean/KoHangulAutomata")

}

else {

if (!exists("KoJamoAutomata", envir = KoNLP:::.KoNLPEnv)) {

assign("KoJamoAutomata", .jnew("kr/pe/freesearch/korean/KoJamoAutomata",

isForceConv), KoNLP:::.KoNLPEnv)

}

JamoAuto <- get("KoJamoAutomata", envir = KoNLP:::.KoNLPEnv)

KoHangulAuto <- .jcast(JamoAuto, "kr/pe/freesearch/korean/KoHangulAutomata")

}

.jcall(KoHangulAuto, "V", "setForceConvert", isForceConv)

out <- .jcall(KoHangulAuto, "S", "convert", input)

.jcall(KoHangulAuto, "V", "clear")

Encoding(out) <- "UTF-8"

return(out)

}

<environment namespace:konlp=""></environment>

패키지가 로딩되어 있다면 단수히 함수명만 명시함으로써 내부 코드를 살펴볼 수 있다.

만일 패키지 내부의 숨겨진 함수를 확인하고 싶다면 “:::”연산자를 사용하면 접근 가능하다.

R > KoNLP:::.onLoad

function (libname, pkgname)

{

ret <- .jinit(parameters = "-Dfile.encoding=UTF-8")

if (ret < 0) {

stop("Could not create VM.")

}

else {

packageStartupMessage("Java initialized.")

}

.jpackage(pkgname, lib.loc = libname)

}

<environment namespace:konlp=""></environment>

대부분 코드로 함수가 작성되어 있는 경우 이런 방법으로 확인 가능하다그러나 고전적인 코드의 경우 포트란 혹은 C로 작성이 되어 있을 경우가 많고 필자의 경우 텍스트 마이닝 코드는 자바로 작성하였는데 이에 대한 확인을 하기 위해서는 패키지 소스코드 전체를 볼 필요가 있다이 경우에는 CRAN에서 제공하는 tar.gz으로 묶인 패키지 파일을 풀어보는게 필요하다.

올바른 함수코드 작성하기

R에서 함수 작성은 크게 어렵지 않으나 함수코드를 작성하는데 어느정도 규약을 지켜주는게 필요하다.

일단 함수 들여쓰기의 경우 RStudio의 편집기를 쓰면 좋은데이는 RStudio가 코드 작성에는 최적이기 때문이다. R함수의 경우 한 라인이 길어질 가능성이 많기 때문에 들여쓰기의 경우 2개 공백 정도가 적당하며 물론 tab문자의 크기도 2개 공백이 좋다게다가 빈번히 주석을 달아줄 필요가 있는데또한 RStudio에서 편리한 옵션들을 제공한다.

다른 사람들의 함수를 읽어볼 필요가 있을때는 formatR패키지에서 제공하는 tidy.dir() 함수를 사용하면 좋은데한 가지 단점은 이를 한글 윈도우에서 동작시키면 모든 한글이 깨진다는 문제가 있다따라서 주의를 요한다.

R에 대한 코딩 가이드도 존재하는데,

http://google-styleguide.googlecode.com/svn/trunk/google-r-style.html

https://github.com/hadley/devtools/wiki/Style

위 두 페이지는 꼭 한번 읽어볼만 한 페이지들이다.

디버깅하기

에러가 나면 가장 먼저 확인해야 될 명령어는 아마도 traceback()일 것이다이 명령어는 call stack을 추적해 에러가 난 함수 호출을 출력해 준다이를 통해서 어느 함수에서 에러가 난 것인지 확인할 수 있다.

browser()라는 함수가 있는데이 함수는 다른 디버그 기능과 함께 쓸 때 가치를 발휘한다예를 들어 본인의 함수에서 특정 부분에 print()문을 넣어서 디버깅 하고 싶은 부분이 있다면, browser()라는 함수를 자신이 디버깅 하고 싶은 코드 중간에 삽입해서 print()문을 대신하게 할 수 있다함수실행시 browser()함수를 만나게 되면 browser 모드로 들어가게 되며 흡사 gdb의 디버깅 화면을 연상하게 하는 행동을 할 수 있다예를 들어 browser()코드가 들어간 부분이 실행되는 당시의 모든 객체를 보고자 한다면 objects()함수를 실행하면 객체 리스트를 볼 수 있으며 해당 객체명을 입력하면 객체에 담겨진 데이터를 출력해 볼 수 있다.

이외에 browser()와 함께 동작하는 debug(), options(error=recover), trace()와 같은 함수들이 있는데이들에 대해서는 추후 시간이 되면 정리해 공유하도록 하겠다.

즐거운 소식은 RStudio가 추후 디버깅에 대한 기능을 IDE에 추가할 예정이니 독자들은 이 툴을 기대해 보는 것도 좋을거 같다.

소스코드 관리

R로 만들어진 소스코드 파일은 관리 대상이다.

개발자가 아닌 대부분의 R사용자들은 SVN과 Git에 대해서 어려움을 가지고 있을 것인데자신의 코드가 관리되고 발전이 되길 원한다면 반드시 이런 형상관리 툴 정도는 간단하게나마 다룰 수 있어야 된다.

RStudio가 Git과 SVN에 대한 인터페이스를 제공하고 있으니 이를 활용하는 것도 좋고이것들이 어렵다면 dropbox와 같은 공유 드라이브 애플리케이션을 사용해도 좋을 것이다역시 이 부분도 방대한 양이기 때문에 추후 기회가 되면 정리해 보겠다.

소스코드 관리

필자의 경우 분석 리포트를 작성하거나혹은 컬럼을 쓰거나 하는 등의 데이터를 다루는 모든 일은 프로젝트로 관리한다.

되도록 코드와 문서는 함께 관리되게 끔 하고 언제든지 문서를 생성할 수 있게끔 만들어 둔다. Latex을 사용할 수 있는 사용자는 knitr나 Sweave와 같은 패키지를 통해 쉽게 분석 관련 문서를 관리할 수 있으며이것이 힘든 분들은 R Markdown을 사용해 관리하면 된다.

그리고 모든 데이터 생성은 원본 데이터를 기반으로 생성되게끔 해준다이는 원본을 훼손 시키지 않으려는 노력 이상의의미를 가지고 있고 원본에서 어떻게 전처리된 데이터를 생성하게 끔 하는지 그 과정도 굉장히 중요하기 때문이다. 만일 원본 데이터가 정말 크다면 전처리된 적은 데이터를 가지고 있으며 이를 어떻게 생성했으니 전처리 과정도 기술해서 남겨야 할 것이다.


반응형

'Program > R' 카테고리의 다른 글

Rstudio package 설치시 에러  (0) 2017.09.10

+ Recent posts

반응형