1. Học hỏi
  2. /
  3. Khoa Học
  4. /
  5. R trung cấp cho Tài chính

Connected

Bài tập

vapply() so với sapply()

Trong ví dụ trước, sapply() không thể rút gọn vì phần tử date của market_crash2 có hai lớp (POSIXct và POSIXt). Tuy vậy, không hề có lỗi nào được ném ra! Nếu một hàm bạn viết kỳ vọng sapply() trả về một vector đã được rút gọn, điều này sẽ gây bối rối.

Để xử lý trường hợp này, có một hàm apply nghiêm ngặt hơn là vapply(), chứa đối số bổ sung FUN.VALUE cho phép bạn chỉ định kiểu và độ dài của đầu ra cần trả về mỗi lần hàm được áp dụng được gọi.

Nếu bạn KỲ VỌNG giá trị trả về của class() là một vector ký tự có độ dài 1, bạn có thể chỉ định điều đó bằng vapply():

vapply(market_crash, class, FUN.VALUE = character(1))
dow_jones_drop           date 
     "numeric"         "Date"

Các ví dụ khác của FUN.VALUE có thể là numeric(2) hoặc logical(1). market_crash2 đã được định nghĩa sẵn cho bạn.

Hướng dẫn

100 XP
  • Dùng lại sapply() để tìm class() của các phần tử trong market_crash2. Hãy để ý rằng nó trả về một list chứ không phải lỗi.
  • Dùng vapply() trên market_crash2 để tìm class(). Chỉ định FUN.VALUE = character(1). Nó sẽ thất bại một cách phù hợp.