开始使用免费开始使用

无法简化

在交互式使用中,sapply() 很好用。它会根据输出类型进行猜测并做出简化,通常这没有问题。然而,在编写函数时,sapply() 并不安全。如果 sapply() 无法简化您的输出,它会退回到像 lapply() 一样返回列表。这可能很危险:如果您假设 sapply() 会返回被简化的向量,就可能导致自定义函数出错。

下面我们用一个包含 2008 年股市崩盘信息的列表来做练习。

本练习是课程的一部分

R 金融中级

查看课程

练习说明

列表 market_crash 已为您创建。

  • 使用 sapply() 获取 market_crash 中每个元素的 class()


已创建一个新列表 market_crash2。不同之处在于日期的创建方式!

  • 使用 lapply() 获取 market_crash2 中每个元素的 class()
  • 使用 sapply() 获取 market_crash2 中每个元素的 class()


market_crash2 中的 date 具有多个类别(class)。为什么 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()
___
编辑并运行代码