Trả về siêu dữ liệu
Đôi khi bạn muốn trả về nhiều thứ từ một hàm, nhưng bạn cần kết quả có một lớp cụ thể (ví dụ: data frame hoặc numeric vector), nên trả về list sẽ không phù hợp. Điều này thường gặp khi bạn có một kết quả kèm siêu dữ liệu về kết quả đó. (Siêu dữ liệu là "dữ liệu về dữ liệu". Ví dụ, đó có thể là tệp nguồn mà bộ dữ liệu được nạp từ đó, tên người dùng đã tạo biến, hoặc số vòng lặp để một thuật toán hội tụ.)
Trong trường hợp đó, bạn có thể lưu siêu dữ liệu trong các thuộc tính (attributes). Nhắc lại, cú pháp để gán thuộc tính như sau.
attr(object, "attribute_name") <- attribute_value
Bài tập này là một phần của khóa học
Nhập môn viết hàm trong R
Hướng dẫn bài tập
- Cập nhật
pipeable_plot()để kết quả có thuộc tính tên"formula"với giá trị làformula. plt_dist_vs_speed, mà bạn đã tạo trước đó, được hiển thị. Hãy xem cấu trúc đã được cập nhật của nó.
Bài tập tương tác thực hành trực tiếp
Hãy thử làm bài tập này bằng cách hoàn thành đoạn mã mẫu này.
pipeable_plot <- function(data, formula) {
plot(formula, data)
# Add a "formula" attribute to data
___ <- ___
invisible(data)
}
# From previous exercise
plt_dist_vs_speed <- cars %>%
pipeable_plot(dist ~ speed)
# Examine the structure of the result
___