hanya sebuah package untuk penggunaan pribadi. untuk menunjang pekerjaan sehari-hari
remotes::install_github('alfrzlp/package-dm')
mengecek apakah nama package kita belum dipakai orang atau tidak
available::available('vgwr')
library(devtools)
create_package("path/to/mynamepackage")
Folder R
akan berisi semua function. setiap function akan ada 1 R script. Sedangkan man
akan berisi dokumentasi menggenai setiap function
git init
git add .
git commit -m "first commit"
git branch -M main
git remote add origin https://github.com/Alfrzlp/vgwr.git
git push -u origin main
buat Rscript kosong terserah. jalankan perintah berikut. (tidak disave juga tidak mengapa) tapi save lebih baik misal diberi nama myworkflow.R
. anda bisa save diluar project.
use_git(message = 'first commit')
use_git_remote(name = 'origin', url = 'https://github.com/Alfrzlp/vgwr.git')
saya lebih suka menggunakan terminal daripada dari Rstudio
buka Tools - version control - Project setup
pastikan telah terhubung dengan repository kita
sebagai contoh akan membuat sebuah fungsi bernama read_string. jalan perintah ini pada myworkflow.R
use_r('read_string')
anda akan diarah kepada file read_string.R
silahkan isi dengan fungsi yang anda inginkan.
misalnya :
read_string <- function(s, col_names = NULL, header = FALSE, tranpose = FALSE, ...){
dat <- utils::read.table(textConnection(s), header = ifelse(header & !tranpose, TRUE, FALSE), ...)
if(tranpose){
dat <- as.data.frame(t(dat))
if(header) dat <- `colnames<-`(dat[-1,], dat[1,])
rownames(dat) <- NULL
}
if(!is.null(col_names)) dat <- `colnames<-`(dat, col_names)
return(dat)
}
jangan lupa jika menggunakan sebuah fungsi dari package lain untuk mencantumkan asal dari packagenya seperti utils::read.table()
meskipun itu dari package utils. agar tidak terjadi konflik antar package ketika ada kesamaan nama fungsi. satu script R bisa berisi beberapa fungsi misalnya anda buat utils.R
untuk beberapa fungsi.
letakan kursor pada fungsi lalu pilih code -> insert roxygen skeleton
. contoh pengisisan :
#' Membaca data.frame dari string
#'
#' @param s string
#' @param col_names nama kolom yang diigninkan, default adalah V1, V2 ...
#' @param header logical. apakah data.frame menggandung header
#' @param tranpose logical. apakah perlu tranpose
#' @param ... parameter untuk `read.table`
#'
#' @return data.frame
#' @export
#'
#' @examples
#' s1 <-
#' 'A 112 20
#' YY 18 10
#' XX 15 15
#' DD 25 28'
#'
#' read_string(s1)
#' read_string(s1, header = TRUE)
#' read_string(s1, tranpose = TRUE, header = FALSE)
#' read_string(s1, tranpose = TRUE, header = TRUE, col_names = LETTERS[1:4])
#' read_string(s1, tranpose = TRUE, col_names = letters[1:4])
read_string <- function(s, col_names = NULL, header = FALSE, tranpose = FALSE, ...){
dat <- utils::read.table(textConnection(s), header = ifelse(header & !tranpose, TRUE, FALSE), ...)
if(tranpose){
dat <- as.data.frame(t(dat))
if(header) dat <- `colnames<-`(dat[-1,], dat[1,])
rownames(dat) <- NULL
}
if(!is.null(col_names)) dat <- `colnames<-`(dat, col_names)
return(dat)
}
jangan lupa save file
buat sebuah Rscript my_package.R
di folder R. fungsinya isi NULL lalu sama seperti diatas
#' my_package: A package for data manipulation
#'
#' The my_package package provides three categories of important functions:
#' str2vec, read_img and many more
#'
#' @section Foo functions:
#' The foo functions ...
#'
#' @docType package
#' @name my_package
NULL
jalankan ini pada myworkflow.R
untuk meload library kita. kita bisa langsung menggunakannnya
load_all()
jika anda coba lihat dokumentasi fungsi ?read_string
masih belum ada. ada bisa jalankan perintah ini
document()
misal ingin menambhakan data dari local. cukup lakukan hal berikut.
dataku <- read.csv('dataku.csv')
use_data(dataku)
pryr::object_size(dataku)
````
melihat penggunaan memory dari package. `mem_used` untuk melihat total ukuran dari semua object di memory
```r
awal <- pryr::mem_used()
load_all()
pryr::mem_used() - awal
buat dokumentasi data di R/data.R
#' dataku: prediksi harga xxx.
#'
#' A dataset containing the Cost and other attributes of almost 57.971 observation 36 variabels.
#'
#' @format A data frame with 57.971 rows and 36 variables:
#' \describe{
#' \item{unit_cost}{xxx cost}
#' \item{x1}{variabel x1}
#' \item{x2}{variabel x2}
#' \item{date}{date}
#' \item{row_id}{baris id}
#' }
#' @source \url{https://apaanini}
"dataku"
jika anda ada menggunakan package lain. maka jalankan perintah seperti berikut di myworkflow.R
use_package("stringr")
use_package('reticulate')
use_package('tesseract')
use_package('tidyr')
use_package('dplyr')
use_readme_rmd()
build_readme()
tinggal cek aja dengan
check()
siap install nih? kita coba install di Rstudio kita
install()
coba close project dan lihat di daftar package, nanti akan ada package kita
penulisan syntax yang amburadul perlu dirapiin. jalankan perintah berikut myworkflow.R
dan lihat bedanya pada setiap script fungsi kita
styler::style_pkg() # restyles an entire R package.
styler::style_dir() # restyles all files in a directory.
hanya untuk file di folder R
saja. jika ingin file spesific
styler::style_file(path = "../mescript.R")
anda bisa pakai yang lainnya juga
use_mit_license("Ridson Alfarizal")
push perubahan ke github dan bisa coba install ke orang lain
devtools::install_github('alfrzlp/vgwr')
alurnya
- buat fungsi use_r('nama_fungsi')
dan tambah dokumentasi
- test fungsi load()
jangan lupa document()
untuk generate dokumentasi fungsi
- tambah dependensi package jika ada
- test keseluruhan dengan check()
- push ke github
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.