開始使用免費開始

無法簡化

在互動式使用上,sapply() 很好用。它會猜測輸出型別以便進行簡化,通常這沒有問題。不過,在撰寫函式時,sapply() 並不是安全的選擇。若 sapply() 無法簡化你的輸出,它會退回到像 lapply() 一樣回傳一個 list。這可能很危險,若你原本假設 sapply() 會回傳已簡化的向量,客製函式就可能失效。

我們來看一個練習,使用一個包含 2008 年股市崩盤資訊的 list。

本練習屬於課程

R 金融中級

檢視課程

練習說明

已為你建立 market_crash 這個 list。

  • 使用 sapply() 取得 market_crash 中每個元素的 class()


另外建立了一個新的 list:market_crash2。不同之處在於日期的建立方式!

  • 使用 lapply() 取得 market_crash2 中每個元素的 class()
  • 使用 sapply() 取得 market_crash2 中每個元素的 class()


market_crash2 中的 date 具有多個類別。為什麼 sapply() 無法將其簡化?

動手互動練習

試著完成這個範例程式碼,體驗一下這個練習。

# Market crash with as.Date()
market_crash <- list(dow_jones_drop = 777.68, 
                     date = as.Date("2008-09-28"))
                     
# Find the classes with sapply()
___

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

# Find the classes with lapply()
___

# Find the classes with sapply()
___
編輯並執行程式碼