MulaiMulai sekarang secara gratis

vapply() vs. sapply()

Pada contoh terakhir, sapply() gagal menyederhanakan karena elemen date dari market_crash2 memiliki dua kelas (POSIXct dan POSIXt). Namun, perhatikan bahwa tidak ada error yang muncul! Jika fungsi yang Anda tulis mengharapkan sapply() mengembalikan vektor yang sudah disederhanakan, hal ini bisa membingungkan.

Untuk mengatasinya, ada fungsi apply yang lebih ketat bernama vapply(), yang memiliki argumen tambahan FUN.VALUE tempat Anda dapat menentukan tipe dan panjang keluaran yang harus dikembalikan setiap kali fungsi yang Anda terapkan dipanggil.

Jika Anda mengharapkan nilai balik class() berupa vektor karakter dengan panjang 1, Anda dapat menentukannya menggunakan vapply():

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

Contoh lain FUN.VALUE bisa berupa numeric(2) atau logical(1). market_crash2 kembali disediakan untuk Anda.

Latihan ini adalah bagian dari kursus

R Tingkat Menengah untuk Keuangan

Lihat Kursus

Petunjuk latihan

  • Gunakan sapply() lagi untuk mencari class() dari elemen-elemen market_crash2. Perhatikan bahwa fungsi ini mengembalikan sebuah list dan bukan error.
  • Gunakan vapply() pada market_crash2 untuk mencari class(). Tentukan FUN.VALUE = character(1). Fungsi ini seharusnya gagal sebagaimana mestinya.

Latihan interaktif praktis

Cobalah latihan ini dengan menyelesaikan kode contoh berikut.

# Market crash with as.POSIXct()
market_crash2 <- list(dow_jones_drop = 777.68, 
                      date = as.POSIXct("2008-09-28"))

# Find the classes with sapply()
___

# Find the classes with vapply()
___
Edit dan Jalankan Kode