y <- 1:4
mean(y)8 Quy trình làm việc: tìm kiếm trợ giúp
Cuốn sách này không phải là một hòn đảo; không có tài nguyên duy nhất nào cho phép bạn thành thạo R. Khi bạn bắt đầu áp dụng các kỹ thuật được mô tả trong cuốn sách này vào dữ liệu của riêng mình, bạn sẽ sớm tìm thấy những câu hỏi mà chúng tôi không trả lời. Phần này mô tả một số mẹo về cách tìm kiếm trợ giúp và giúp bạn tiếp tục học hỏi.
8.1 Google là bạn của bạn
Nếu bạn bị mắc kẹt, hãy bắt đầu với Google. Thông thường việc thêm “R” vào truy vấn là đủ để giới hạn kết quả liên quan: nếu tìm kiếm không hữu ích, thường có nghĩa là không có kết quả dành riêng cho R. Ngoài ra, việc thêm tên package như “tidyverse” hoặc “ggplot2” sẽ giúp thu hẹp kết quả thành mã quen thuộc hơn với bạn, ví dụ, “how to make a boxplot in R” so với “how to make a boxplot in R with ggplot2”. Google đặc biệt hữu ích cho thông báo lỗi. Nếu bạn nhận được thông báo lỗi và không biết nó có nghĩa gì, hãy thử tìm kiếm trên Google! Rất có thể ai đó khác đã bị nhầm lẫn bởi nó trước đây, và sẽ có trợ giúp ở đâu đó trên web. (Nếu thông báo lỗi không bằng tiếng Anh, chạy Sys.setenv(LANGUAGE = "en") và chạy lại mã; bạn có nhiều khả năng tìm thấy trợ giúp cho thông báo lỗi tiếng Anh hơn.)
Nếu Google không giúp được, hãy thử Stack Overflow. Bắt đầu bằng cách dành một chút thời gian tìm kiếm câu trả lời hiện có, bao gồm [R], để giới hạn tìm kiếm cho các câu hỏi và câu trả lời sử dụng R.
8.2 Tạo reprex
Nếu tìm kiếm trên Google không tìm thấy gì hữu ích, thì nên chuẩn bị một reprex, viết tắt của ví dụ tái lập tối thiểu (minimal reproducible example). Một reprex tốt giúp người khác dễ giúp bạn hơn, và thường bạn sẽ tự tìm ra vấn đề trong quá trình tạo nó. Có hai phần để tạo reprex:
Đầu tiên, bạn cần làm cho mã của mình có thể tái lập. Điều này có nghĩa là bạn cần nắm bắt mọi thứ, tức là bao gồm mọi lệnh
library()và tạo tất cả các đối tượng cần thiết. Cách dễ nhất để đảm bảo bạn đã làm điều này là sử dụng package reprex.Thứ hai, bạn cần làm cho nó tối thiểu. Loại bỏ mọi thứ không liên quan trực tiếp đến vấn đề của bạn. Điều này thường bao gồm việc tạo một đối tượng R nhỏ hơn và đơn giản hơn nhiều so với thứ bạn đang gặp trong thực tế hoặc thậm chí sử dụng dữ liệu tích hợp sẵn.
Nghe có vẻ tốn nhiều công sức! Và có thể là vậy, nhưng nó mang lại lợi ích lớn:
80% thời gian, việc tạo một reprex xuất sắc sẽ tiết lộ nguồn gốc vấn đề của bạn. Thật đáng kinh ngạc khi quá trình viết một ví dụ độc lập và tối thiểu cho phép bạn tự trả lời câu hỏi của mình.
20% thời gian còn lại, bạn sẽ nắm bắt được bản chất vấn đề theo cách dễ dàng cho người khác thử nghiệm. Điều này cải thiện đáng kể cơ hội nhận được trợ giúp!
Khi tạo reprex bằng tay, dễ vô tình bỏ sót thứ gì đó, nghĩa là mã của bạn không chạy được trên máy tính của người khác. Tránh vấn đề này bằng cách sử dụng package reprex, được cài đặt như một phần của tidyverse. Giả sử bạn sao chép đoạn mã này vào clipboard (hoặc, trên RStudio Server hay Cloud, chọn nó):
Sau đó gọi reprex(), trong đó đầu ra mặc định được định dạng cho GitHub:
reprex::reprex()Một bản xem trước HTML được render đẹp sẽ hiển thị trong Viewer của RStudio (nếu bạn đang dùng RStudio) hoặc trình duyệt mặc định. Reprex tự động được sao chép vào clipboard (trên RStudio Server hoặc Cloud, bạn sẽ cần tự sao chép):
``` r
y <- 1:4
mean(y)
#> [1] 2.5
```
Văn bản này được định dạng theo cách đặc biệt, gọi là Markdown, có thể dán vào các trang như Stack Overflow hoặc GitHub và chúng sẽ tự động render thành dạng mã. Đây là cách Markdown đó trông khi được render trên GitHub:
y <- 1:4
mean(y)
#> [1] 2.5Bất kỳ ai khác đều có thể sao chép, dán, và chạy ngay lập tức.
Có ba thứ bạn cần bao gồm để làm ví dụ có thể tái lập: các package cần thiết, dữ liệu, và mã.
Gói mở rộng nên được tải ở đầu tập lệnh để dễ thấy ví dụ cần những gì. Đây là thời điểm tốt để kiểm tra bạn đang sử dụng phiên bản mới nhất của mỗi package; bạn có thể đã phát hiện lỗi đã được sửa kể từ khi bạn cài đặt hoặc cập nhật package lần cuối. Với các package trong tidyverse, cách dễ nhất để kiểm tra là chạy
tidyverse_update().-
Cách dễ nhất để bao gồm dữ liệu là sử dụng
dput()để tạo mã R cần thiết để tái tạo nó. Ví dụ, để tái tạo tập dữ liệumtcarstrong R, thực hiện các bước sau:- Chạy
dput(mtcars)trong R - Sao chép đầu ra
- Trong reprex, gõ
mtcars <-, rồi dán.
Cố gắng sử dụng tập con nhỏ nhất của dữ liệu vẫn cho thấy vấn đề.
- Chạy
-
Dành một chút thời gian đảm bảo mã của bạn dễ đọc cho người khác:
Đảm bảo bạn đã sử dụng dấu cách và tên biến ngắn gọn nhưng mang tính mô tả.
Sử dụng comment để chỉ ra vấn đề của bạn nằm ở đâu.
Cố gắng hết sức để loại bỏ mọi thứ không liên quan đến vấn đề.
Mã càng ngắn, càng dễ hiểu và dễ sửa.
Kết thúc bằng cách kiểm tra rằng bạn thực sự đã tạo một ví dụ có thể tái lập bằng cách bắt đầu phiên R mới và sao chép dán tập lệnh.
Tạo reprex không phải là chuyện nhỏ, và sẽ cần thực hành để học cách tạo reprex tốt, thực sự tối thiểu. Tuy nhiên, việc học cách đặt câu hỏi có kèm mã, và đầu tư thời gian để làm cho nó có thể tái lập sẽ tiếp tục mang lại lợi ích khi bạn học và thành thạo R.
8.3 Đầu tư vào bản thân
Bạn cũng nên dành thời gian chuẩn bị để giải quyết vấn đề trước khi chúng xảy ra. Đầu tư một chút thời gian học R mỗi ngày sẽ mang lại lợi ích lớn trong dài hạn. Một cách là theo dõi những gì nhóm tidyverse đang làm trên blog tidyverse. Để theo kịp cộng đồng R rộng hơn, chúng tôi khuyến nghị đọc R Weekly: đây là nỗ lực cộng đồng để tổng hợp tin tức thú vị nhất trong cộng đồng R mỗi tuần.
8.4 Tóm tắt
Chương này kết thúc phần Toàn cảnh của cuốn sách. Bạn đã thấy các phần quan trọng nhất của workflow khoa học dữ liệu: visualization, biến đổi, sắp xếp và nhập dữ liệu. Bây giờ bạn đã có cái nhìn tổng thể về toàn bộ workflow, và chúng ta bắt đầu đi vào chi tiết của từng phần nhỏ.
Phần tiếp theo của cuốn sách, Trực quan hóa, đi sâu hơn vào ngữ pháp đồ họa và tạo visualization dữ liệu với ggplot2, trình bày cách sử dụng các công cụ bạn đã học để tiến hành phân tích dữ liệu khám phá, và giới thiệu các phương pháp tốt để tạo biểu đồ cho truyền đạt.