Tham khao: - The tidyverse style guide (Hadley Wickham): https://style.tidyverse.org/
Google’s R style Guide: https://google.github.io/styleguide/Rguide.html
“Good coding style is like correct punctuation: you can manage without it, butitsuremakesthingseasiertoread.” Hadley Wickham
ucb-admit.csv ## Bad UCB Admit.csv
Mỗi 1 file R chỉ nên gồm những hoặc đoạn code có mối quan hệ với nhau xét về mặt ngữ nghĩa, không nên viết những file mã lệnh quá dài, gây ra khó khăn khi người đọc phải scroll lên xuống nhiều để nắm bắt ý tưởng. Nếu như việc thực thi các file diễn ra theo trình tự thì nên đặt số thứ tự cho file:
0-download.R 1-parse.R 2-explore.R
clean_data <- function(x){
}
dataClean <- function(x){
} # 4. DAU CACH (KHOANG TRANG-SPACE) - Đặt dấu cách trước và sau các toán tử (=, +, -, <-, %>%, …) - Đặt dấu cách sau dấu phẩy (không đặt dấu cách trước dấu phẩy ,) - như viết chính tả thông thường - Không đặt khoảng trắng sau tên hàm ## Good average <- mean(feet / 12 + inches, na.rm = TRUE) ## Bad average<-mean(feet/12+inches,na.rm=TRUE) ## Good summary(mtcars) ## Bad summary (mtcars)
x <- 1:10 base::get
x <- 1 : 10 base :: get
list( total = a + b + c, mean = (a + b + c) / n )
if (debug) do(x) diamonds[5, ]
if ( debug ) do(x)
x[1,]
x[1 ,]
ggplot(diamonds %>% head(100), mapping = aes(x = price, y = z, shape = carat)) + geom_point(aes(col = carat)) ## Not very bad ggplot(diamonds %>% head(100), mapping = aes(x = price, y = z, shape = carat)) + geom_point(aes(col = carat))
Mỗi dòng chỉ nên chứa tối 80 ký tự để có thể in ra/hiển thị trên markdown dễ dàng
Sử dụng chức năng format tự động trong RStudio (Ctrl + Shift + A)
#Good iris %>% group_by(Species) %>% summarise( Sepal.Length = mean(Sepal.Length), Sepal.Width = mean(Sepal.Width), Species = n_distinct(Species) ) #Not very bad iris %>% group_by(Species) %>% summarise(Sepal.Length = mean(Sepal.Length), Sepal.Width = mean(Sepal.Width), Species = n_distinct(Species))
ggplot(diamonds, mapping = aes(x = price)) + geom_histogram() + # Good labs(title = “Shine bright like a diamond”, # Good x = “Diamond prices”, # Bad y = ‘Frequency’)
Trong quá trình viết mã, khi một luồng công việc được lặp đi lặp lại, bạn nên tham số hoá những đoạn code đó và viết thành function. Thói quen này giúp mã nguồn ngắn hơn, dễ quản lý hơn khi nếu điều chỉnh thì chỉ cần điều chỉnh ở 1 nơi.
Soạn mã lệnh cũng như trình bày văn bản, ngay hàng thẳng lối giúp người đọc thoải mái, đồng thời có thể tách bạch được ý tưởng thành từng phân đoạn.
function luôn được mở đầu và kết thúc với { và } và luôn dùng return ở dòng lệnh gán giá trị trả về, cho dù function đó chỉ có 1 lệnh đơn giản
calculate_mean <- function(x){ return(mean(x)) }
calculate_mean <- function(x) mean(x)
long_function_name <- function(a = “a long argument”, b = “another argument”, c = “another long argument”) {
}
analysis_result <- analyze(a = “a long argument”, b = “another argument”, c = “another long argument”)
ggplot(dat, aes(x = rating)) + geom_histogram(binwidth = .5, colour = “black”, fill = “white”) + facet_grid(cond ~ .) + geom_vline(data = cdat, aes(xintercept = rating.mean), linetype = “dashed”, size = 1, colour = “red”)