R 패키지, vignette 그리고 설치

 R 패키지를 만들 때 vignette를 만드려면 usethis를 사용한다. 패키지 생성 때 > usethis::use_vignette("Example") Example이라는 이름의 파일이 만들어진다. 이제 github에서 설치를 할 때, remotes::install_github('drtagkim/sampleCodeNotRun',                         build_manual = TRUE,                         build_vignettes = TRUE)

S3 클래스 - R 객체 지향 예제

원을 객체로 만들어 면적을 구해보자. #Constructor circle <- function(id,r) {   #member   obj=list(     id=id,     r=r   )   #class declaration   class(obj)='circle'   obj } area <- function(x) UseMethod('area',x) area.circle <- function(x) {   pi*x$r^2 } print.circle <- function(x) {   cat(paste0(     "Shape: circle\n",     "Radius: ",x$r,     '\n'   )) } 이제 활용해보자. > c1 <- circle(1,10) > c2 <- circle(2,20) > c1 Shape: circle Radius: 10 > c2 Shape: circle Radius: 20 > area(c1) [1] 314.1593 > area(c2) [1] 1256.637

RStudio 실행시 R 찾지 못할 때

 실행할 때 Ctrl 키를 누르고 있으면 R을 선택할 수 있다. 혹시 실행 문제가 있다면 제일 먼저 시도해볼 것.

dummy와 tidyr의 pivot_wider

 코드로 간단히 설명 > library(tidyverse) > fish_encounter %>% pivot_wider(name_from=station,values_from=seen)

cronR - 리눅스 서버에서 R 작업 스케줄링

> library(cronR) > f   <- system.file(package = "cronR", "extdata", "helloworld.R") > cmd <- cron_rscript(f) > cron_add(command = cmd, frequency = 'minutely',    id = 'test1', description = 'My process 1', tags = c('lab', 'xyz')) > cron_add(command = cmd, frequency = 'daily', at='7AM', id = 'test2') > cron_njobs() > cron_ls() > cron_clear(ask=TRUE) > cron_ls() 출처:  https://rdrr.io/cran/cronR/man/cron_add.html

Google Cloud Computing Engine에 인스턴스 설치하다가...

 돈을 아껴보려 최소 사양으로 설치했더니 R 패키지 컴파일에 계속 실패했다. 생각해보니 전에도 이런 일이 있었는데 까먹고 있었다... 최소 4GB의 메모리가 필요한데 요걸 750MB로 해뒀으니 될리가... SWAP 메모리를 설정해야 tidyverse 등을 정상적으로 설치할 수 있다. 그래서, $ sudo swapon --show 역시 확인해보니 스왑 안 걸어뒀네?! $ sudo fallocate -l 4G /swapfile $ sudo chmod 600 /swapfile $ sudo mkswap /swapfile $ sudo swapon /swapfile 이러고 이제  /etc/fstab 파일 수정했다. $ sudo vi /etc/fstab 마지막 줄에 다음 추가 /swapfile swap swap defaults 0 0 음.. 확인해 보면 잘 되어 있다. $ sudo free -h -__- 이런... 점점 기억이...

TidyBlock

 https://tidyblocks.tech/ https://www.rstudio.com/resources/rstudioconf-2020/tidyblocks-using-the-language-of-the-tidyverse-in-a-blocks-based-interface/