无法简化
在交互式使用中,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()
___