Category: R

  • RStudio Server 포트 변경

    RStudio의 기본 포트는 8787이다. 부득이하게 변경해야 할 경우에는 다음의 파일을 수정한다.

    /etc/rstudio/rserver.conf
    www-port=포트번호
  • 수직 histogram 그리기

    수직 histogram 그리기

    산점도와 같은 그래프 옆에 수직 방향으로 density plot이나 histogram을 그리고 싶을 때가 있다. Density plot은 지난번에 언급하였으니 이번에는 histogram을 그리는 방법으로 구글에서 찾아보았다. Histogram은 수직 방향으로 그려주는 옵션이 없기 때문에 이와 유사한 barplot을 이용한 방법이다. dplyr도 배웠으니, ggplot2도 배워야 하나 싶기도 하지만, 일단 기본 기능으로 그려보았다.

    왼쪽 그래프의 우측 margin과 우측 그래프의 좌측 margin을 0으로 두면 볼만하다.

    layout(matrix(data=c(1, 1, 1, 1, 1, 2),  nrow=1, byrow=T))
    
    par(mar=c(5, 4, 4, 0)+ 0.1)
    boxplot(
      데이터
      ,axes = F
    )
    axis(1, at = c(seq(1, 100, 10), 100), c(seq(1, 100, 10), 100))
    axis(2, at = seq(0, 1, 0.2), seq(0, 1, 0.2), las = 1)
    
    par(mar=c(5, 0, 4, 3)+ 0.1)
    barplot(hist(데이터, plot = FALSE, breaks = seq(0, 1, 0.01))$counts, axes = F, space = 0, horiz=TRUE, xlab= "", ylab="")
  • dplyr

    R에서 자료를 추출하거나 다룰 때 subset을 기반으로 사용했다. 자료가 아주 크지 않다면 느린 처리 속도는 무시할 수 있다. 하지만 시대의 흐름인 dplyr로 움직이고 있다. 오전에 프로즌 기다리면서 전에 짜두었고, 현재 진행 중인 연구 코드를 dplyr로 변환하여 보았다. 몇몇 부분은 기존의 코드를 사용할 수 밖에 없었지만, 거의 대부분 변환하였고 실행 속도는 매우 빨라졌다.

    하나 까다로운 부분이 있다면 특정 결과가 1~4개 정도 있는 항목을 순차적으로 정리할 때이다. 나는 top_n()으로 정리하기는 했는데 top_n(4, )로 할 경우 1개 있는 경우도 보이고, 4개 있는 경우도 보이고, 6개 있는 경우는 4개만 보인다. setdiff()를 반복적으로 하는 것으로 일단 해결했다. 이 부분이 subset이 조금 더 편했다.

  • require()

    R을 사용한지 거의 10년이 되어가는데 이제야 library()와 require()를 구별할 수 있게 되었다. 일단 둘 다 패키지를 불러온다는 점에 있어서는 동일하다.

    패키지가 없을 경우 library()는 오류 메세지를 출력한다.

    require()은 True/False로 결과를 반납한다. 패키지가 있으면 패키지가 로딩이 된다. 이를 이용하면 패키지가 없을 때 패키지를 설치하도록 하는 것을 구현할 수 있다. CDM 연구로 다른 사람들 스크립트를 볼 때 이런것도 좀 챙겼으면 더 빨리 알 수 있었을 텐데.

    if (!require('caret')) {install.packages('caret')}