应用返回 NULL 的函数
在之前所有练习中,我们都默认对向量和列表应用的函数会返回有意义的结果。比如,tolower() 函数会将字符串转换为小写后返回。但情况并不总是如此。假设您想查看列表中每个元素的结构,可以使用 str() 函数,它会返回 NULL:
lapply(list(1, "a", TRUE), str)
这个调用实际上会返回一个与输入列表大小相同的列表,里面全是 NULL 值。另一方面,单独调用
str(TRUE)
只会在控制台打印该逻辑值的结构,而不是返回 NULL。这是因为 str() 在幕后使用了 invisible(),它会返回返回值的"不可见副本",此处为 NULL。当未对 str() 的结果进行赋值时,这可防止其被打印。
下面这段代码会返回什么(split_low 已在工作区可用)?请先思考再在控制台运行!
lapply(split_low, function(x) {
if (nchar(x[1]) > 5) {
return(NULL)
} else {
return(x[2])
}
})
本练习是课程的一部分
