vapply() बनाम sapply()
पिछले उदाहरण में, sapply() सरल (simplify) करने में असफल रहा क्योंकि market_crash2 के date तत्व की दो classes थीं (POSIXct और POSIXt). हालाँकि, ध्यान दें कि कोई error नहीं आई! अगर आपने कोई ऐसा फंक्शन लिखा होता जो sapply() से एक सरल वेक्टर की वापसी की अपेक्षा करता, तो यह उलझन पैदा कर सकता था.
इसीलिए एक अधिक सख्त apply फंक्शन होता है, vapply(). इसमें एक अतिरिक्त argument FUN.VALUE होता है, जहाँ आप यह निर्दिष्ट कर सकते हैं कि हर बार जब आपका applied फंक्शन कॉल हो, तो आउटपुट का type और length क्या होनी चाहिए.
यदि आप यह "अपेक्षा" करते थे कि class() का return value लंबाई 1 का character वेक्टर होगा, तो आप इसे vapply() से निर्दिष्ट कर सकते हैं:
vapply(market_crash, class, FUN.VALUE = character(1))
dow_jones_drop date
"numeric" "Date"
FUN.VALUE के अन्य उदाहरण numeric(2) या logical(1) हो सकते हैं. market_crash2 आपके लिए फिर से उपलब्ध है.
यह अभ्यास पाठ्यक्रम का हिस्सा है
इंटरमीडिएट R फॉर फाइनेंस
अभ्यास निर्देश
sapply()का उपयोग फिर से करें ताकिmarket_crash2के तत्वों कीclass()पता चल सके. ध्यान दें कि यह error के बजाय एक list लौटाता है.market_crash2परvapply()का उपयोग करकेclass()निकालें.FUN.VALUE = character(1)निर्दिष्ट करें. इसे उपयुक्त रूप से असफल होना चाहिए.
इंटरैक्टिव व्यावहारिक अभ्यास
इस अभ्यास को इस नमूना कोड को पूरा करके आज़माएँ।
# 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()
___