1. Learn
  2. /
  3. Courses
  4. /
  5. R nâng cao

Connected

Exercise

Áp dụng các hàm trả về NULL

Trong tất cả các bài tập trước, giả định rằng các hàm áp dụng lên vector và list đều trả về một kết quả có ý nghĩa. Ví dụ, hàm tolower() đơn giản trả về các chuỗi với ký tự viết thường. Nhưng không phải lúc nào cũng vậy. Giả sử bạn muốn hiển thị cấu trúc của từng phần tử trong một list. Bạn có thể dùng hàm str() cho việc này, hàm này trả về NULL:

lapply(list(1, "a", TRUE), str)

Lời gọi này thực sự trả về một list có cùng kích thước với list đầu vào, chứa toàn bộ các giá trị NULL. Mặt khác, khi gọi

str(TRUE)

một mình thì chỉ in cấu trúc của kiểu logic ra console, chứ không phải NULL. Đó là vì str() dùng invisible() phía dưới, hàm này trả về một bản sao vô hình của giá trị trả về, trong trường hợp này là NULL. Điều này ngăn không cho nó được in ra khi kết quả của str() không được gán vào biến.

Đoạn mã sau sẽ trả về gì (split_low đã có sẵn trong workspace)? Hãy thử suy luận về kết quả trước khi chạy trực tiếp trên console!

lapply(split_low, function(x) {
  if (nchar(x[1]) > 5) {
    return(NULL)
  } else {
    return(x[2])
  }
})

Instructions

50 XP

Possible answers